Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-08-10

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 weinig joined perl6
00:03 clkao fglock, btw, smoke is passing fewer tests than before :/
00:04 diakopter joined perl6
00:07 diakopter joined perl6
00:08 diakopter joined perl6
00:20 hikozaemon joined perl6
00:25 svnbot6 r12055 | lwall++ | Some obsolete things in porting_howto.
00:28 nekokak joined perl6
00:31 svnbot6 r12056 | clkao++ | Add a bunch of passed tests.
00:37 lumi joined perl6
00:40 vsoni joined perl6
00:57 svnbot6 r12057 | cmarcelo++ | * HsJudy: partial and "dangerous" support to GHC 6.4.2.
01:00 diakopter joined perl6
01:12 rodi joined perl6
01:13 audreyt chip: 0.4.6 tests clean except for one segfault.
01:13 audreyt patch for that is on parrotbug@ now.
01:13 audreyt thanks for the releng work.
01:13 clkao audreyt!
01:14 clkao audreyt: i meant to ask you something but i already forgot
01:14 clkao it's a busy day
01:15 svnbot6 r12058 | cmarcelo++ | * HsJudy: Separate static case to make easy test it.
01:15 audreyt chip: that bug was always there, but unmasked by my lexer patch; somehow it did not fail for me prior to 0.4.6 release (might be some intervening commits, might be XCode upgrade); in any case it's now resolved.
01:15 audreyt for me, that is.
01:15 cmarcelo anyone with 32bits arch and GHC 6.4.2 could test this steps? cd third-party/judy/Judy-1.0.3; ./configure; make; cd ../../HsJudy; make -f Makefile.static test
01:16 audreyt cmarcelo: you can always test on feather... :)
01:16 audreyt but feather has 6.4.1 iirc
01:16 cmarcelo audreyt: 641 is ok i think... how do i test on feather?
01:17 audreyt  you got a feather account?
01:17 audreyt (nvm, I'll go test on feather)
01:17 audreyt clkao: you need irc->hm gateway
01:18 clkao ()
01:18 clkao indeed
01:19 cmarcelo no feather account? how do i get one?
01:19 clkao send mail to Juerd
01:19 audreyt at juerd.nl
01:20 audreyt with your real name, desired login id
01:20 cmarcelo audreyt: btw, use of pugs-fps in HsJudy for GHC < 6.5 isn't there yet..
01:23 audreyt cmarcelo:
01:23 audreyt All tests successful.
01:23 audreyt Files=5, Tests=147,  0 wallclock secs ( 0.06 cusr +  0.04 csys =  0.10 CPU)
01:23 audreyt The Glorious Glasgow Haskell Compilation System, version 6.4.1
01:23 audreyt Linux feather 2.6.15.1 #1 Tue Jan 31 00:50:05 CET 2006 i686 GNU/Linux
01:23 audreyt cmarcelo++
01:24 audreyt chip: spoke too soon. t/examples/library.t and t/library/pcre.t segfaulted
01:24 audreyt # src/ops/core.ops:1169: failed assertion `(interpreter->ctx.bp_ps.regs_p[-1L-(cur_opcode[2])])->pmc_ext'
01:24 audreyt #3 on library, #1 on pcre
01:24 audreyt same assertion failure
01:24 audreyt probably beyond my capability, so I'll punt.
01:25 audreyt MacIntel GCC 4.0.1 darwin 8.7.1
01:26 TreyHarris audreyt: i had a fun one today.  somebody at $job showed me some Perl 5 code they'd written that went kind of like this: "my $sort = sub { sort @_ }; if ($want_reverse) { $sort = sub { reverse $sort->(@_) } }" and they said "i hope Perl 6 will DWIM appropriately instead of going into an infinite loop".  i was kind of at a loss to respond :-)
01:26 rodi wow.
01:27 audreyt TreyHarris: yeah. perl6 will dwim just fine
01:27 TreyHarris i should've just pointed them at http://en.wikipedia.org/wiki/Halting_problem
01:27 markstos_ joined perl6
01:27 audreyt $sort.wrap( reverse call );
01:27 audreyt er
01:27 audreyt $sort.wrap({ reverse call })
01:28 TreyHarris audreyt: good point! :-)
01:28 audreyt :)
01:28 markstos_ I'm trying to compile pugs, but am getting the error ""Setup: cannot satisfy dependency pugs-fps"     No google results for that.
01:28 audreyt markstos_: during "make" watch for build errors
01:28 audreyt for third-party/fps/
01:28 audreyt or maybe nopaste the build log?
01:29 markstos_ I got this "
01:29 markstos_ Use of uninitialized value in numeric ge (>=) at util/build_pugs.pl line 92."
01:29 audreyt (which GHC version are you using?)
01:29 markstos_ I'll poke more.
01:29 markstos_ ghc 6.4.1
01:29 markstos_ FreeBSD 5.something.
01:29 audreyt aha.
01:29 markstos_ aha?
01:29 TreyHarris actually, i've been thinking about how closures are brilliant, but people that don't understand them often get into trouble, and in Perl 6 the most common pirate-programmer uses of closures are done more declaratively (state, .wrap, etc.).  it's nice.  was that an explicit goal, or did it just fall out of the overall normalization process?
01:29 audreyt thanks, fixed.
01:29 markstos_ Maybe I need 'gmake', instead?
01:29 audreyt no, "make" again should be fine
01:29 svnbot6 r12059 | audreyt++ | * markstos++ pointed out that our minimake is bogus on pristine builds.
01:30 markstos_ Whoa. Real time service.
01:30 audreyt markstos++
01:30 rodi audreyt is actually a consortium, I've heard.
01:31 cmarcelo audreyt: ops.. 147 tests?
01:31 audreyt TreyHarris: I think "every {} is a closure" and general functional-programming awareness is one of the explicit goals
01:31 markstos_ I'm getting a little different build failure now. I'll paste it.
01:32 pasteling "markstos_" at 12.176.101.89 pasted "build failure on FreeBSD 5.4 with GHC 6.4.1" (81 lines, 4.5K) at http://sial.org/pbot/18874
01:33 audreyt cmarcelo: that's by hand, sorry
01:33 audreyt Files=7, Tests=236,  0 wallclock secs ( 0.10 cusr +  0.06 csys =  0.16 CPU)
01:33 audreyt forgot to run BS and Hash
01:33 markstos_ Looks like the core issue may be: "Could not find module `GHC.IOBase'"
01:34 audreyt hm. cabal says you have ghc 6.4.2
01:34 markstos_ Oh. I probably do. :)
01:34 audreyt ok. the core reason is your ghc wasn't built for profiling
01:35 audreyt we need to probe this somehow.
01:35 markstos_ BRB
01:35 audreyt offending line is line 100 build_pugs
01:35 audreyt I've disabled it for now
01:35 markstos_ Thanks.
01:36 svnbot6 r12060 | audreyt++ | * disable build for profilign for now
01:36 markstos_ Seems to be working.
01:36 cmarcelo audreyt: I've ended up using unsafeCoerce# =P... i'll see if integrate the use of pugs-fps, and then fit it on Pugs build proc..
01:37 audreyt yay
01:40 diakopter sorry to make svn slow; doing my first fresh checkout.
01:43 xinming_ joined perl6
01:47 luqui joined perl6
01:59 shachaf joined perl6
02:00 luqui TimToady, ping
02:00 xern joined perl6
02:01 TreyHarris audreyt: erm, is .wrap a mutator?  shouldn't that be $sort .= wrap?
02:02 luqui last I heard .wrap was a mutator.
02:02 luqui that was a long time ago...
02:02 TreyHarris oh, i just reread S02.  i guess .wrap mutates in void context, but returns a new sub in scalar context
02:02 luqui ugh
02:03 luqui that must be fixed
02:03 TreyHarris oh... no
02:03 TreyHarris i misread
02:03 TreyHarris i was skimming.  it returns a handle you can use to unwrap the wrapper.  or you can temp'ize it to make it unwrap at the end of the scope
02:04 audreyt TreyHarris: wrap is a mutator.
02:04 luqui kay, that's a bit better
02:04 TreyHarris yes, it's a mutator.  audreyt is right, as always :-)
02:04 audreyt Code does not support wrap
02:04 weinig joined perl6
02:04 audreyt Routine does
02:04 TreyHarris i forget, is Sub now Routine?
02:05 audreyt Sub extends Routine
02:05 audreyt as does Method
02:05 audreyt Routine is common to both
02:05 TreyHarris *nod* got it
02:05 audreyt upshot is
02:05 audreyt ({...}).wrap
02:05 audreyt fails
02:05 audreyt (sub {...}).wrap
02:05 audreyt works
02:05 audreyt just like
02:05 audreyt (1,2,3).push
02:05 audreyt fails
02:05 audreyt [1,2,3].push
02:06 audreyt works
02:06 luqui that's a little disconcerting...
02:07 TreyHarris thanks.  sometimes with Perl 6 i feel like the guy in the science fiction story who chose to be put in suspended animation and be brought back to life for one day a year.  after awhile, the hardest thing for him was getting used to how the language was changing, and his vernacular was obsoleting faster than he could learn the new :-)
02:08 TreyHarris it's recognizably the same Perl 6 as the one in Apo 2.  But it's also changed a lot.
02:10 chip audreyt: I've captured your bug report
02:11 chip audreyt: I'll look at it once svk works again
02:11 chip or maybe I'll go back to svn for now
02:12 TreyHarris ?eval [1,2,3].push(4)
02:12 weinig joined perl6
02:12 evalbot_12023 is now known as evalbot_12060
02:12 evalbot_12060 4
02:12 TreyHarris ?eval [1,2,3].push
02:12 evalbot_12060 3
02:12 clkao chip: so sorry :/
02:14 chip clkao: no worries, I've converted once, I can do it again :-)
02:15 audreyt luqui: having each block carrying a Wrap queue is very expensive
02:16 audreyt so in tokyo we reasoned that it's probably wise to put it at routine level
02:19 luqui that is reasonable
02:19 luqui seems kinda like it should be done at the symbol table level, though
02:20 luqui i.e. &routine.VAR.wrap...
02:20 audreyt that will prevnt $foo.warp
02:20 audreyt $foo.wrap
02:20 luqui hmm, true
02:20 audreyt also will destroy the original intent of action-at-a-distance refs
02:20 audreyt :)
02:20 luqui i see
02:21 luqui so is .wrap the only way to action-at-a-distancely replace code?
02:21 luqui (wrapping but not ever "call"ing)
02:22 audreyt is it not the most generic possible one
02:22 audreyt where all others can be defined on?:)
02:22 audreyt it's like saying
02:22 audreyt "is assign the only way to replace Scalar? :)"
02:22 luqui heh
02:22 luqui okay, one more question
02:23 luqui is a code object available to the wrapper?
02:23 luqui which calls the unwrapped routine?
02:23 luqui is &call lexical, that is?
02:23 audreyt yes it is.
02:23 luqui okay, I am satisfied.
02:23 audreyt yay :)
02:24 luqui the "wrapper id" business still bugs me.
02:24 luqui but I suppose it is a decent way to unwrap a rountine which has been subsequently wrapped by someone else
02:24 audreyt it's just its VALID
02:24 audreyt I mean VAL
02:24 audreyt I mean VID
02:24 audreyt whatever :)
02:24 luqui larry just changed it to something silly
02:24 luqui uh... SKID
02:24 luqui that's it
02:25 audreyt serious? ;)
02:25 luqui his latest commit.
02:26 audreyt wow
02:26 audreyt he's got to be skidding.
02:26 luqui hehe
02:27 audreyt but I don't care about ergonomics </mantra>
02:27 luqui so the wrapper id is the *wrapper's* SKID?
02:27 luqui or the routine's?
02:27 luqui at the time that is
02:27 luqui oh...
02:28 luqui value type.  "at the time" is meaningless
02:28 luqui if it has a SKID
02:28 audreyt yup.
02:28 audreyt timelessness
02:28 luqui so it's got to be the wrapper
02:28 audreyt yup.
02:29 luqui it just seems to me that if you say:  &foo.wrap:{ something not involving &call }
02:29 luqui and don't store its id
02:29 luqui the previous code should be gc'd
02:29 audreyt &foo.wrap(&foo.SKID)
02:29 chip audreyt: the t/example/library.t failure is on libpcre?
02:29 audreyt is unwrap of outermost
02:29 audreyt I think
02:29 audreyt chip: yeah
02:30 audreyt chip: I mean, it fails on assertion
02:30 luqui uhmmm....
02:30 chip audreyt: probably a stealth version dependency ... or maybe anyway
02:30 shachaf joined perl6
02:30 luqui but &foo.SKID doesn't change...
02:30 chip audreyt: copy/paste?  and which version of libpcre do you have?
02:30 audreyt luqui: good point...
02:30 chip oh wait,
02:30 audreyt &foo.unwrap; # outermost
02:30 audreyt perhaps?
02:31 chip audreyt: the failed assertion happened on both the library and pcre tests?
02:31 audreyt yes.
02:31 chip ah
02:31 luqui that sortof makes sense in a that-will-seldom-be-useful kind of way
02:31 luqui my intuition tells me that the "wrapper queue" should be implicit
02:31 luqui in the references kept by the wrapper codes
02:32 chip audreyt: those tests are both libpcre
02:33 chip audreyt: I've got libpcre 6.4 installed; perhaps you have something substantially older or newer?
02:33 luqui audreyt, if wrap is to be the most general thing on top of which everything can be built
02:41 audreyt 6.6 here
02:41 audreyt but anyway... I need to run
02:41 audreyt luqui: I do agree
02:41 audreyt but $job. bbl
02:41 luqui adios
02:42 vsoni hi audreyt
02:49 cmarcelo left perl6
02:51 markstos_ Where can I find documentation about the difference between $.foo and ./foo  ? I don't know how to search for "dot slash"...
02:53 jmf joined perl6
02:54 * markstos_ finds Perl6::Oveview::Operator
03:00 luqui marcus_, I don't think ./foo exists
03:01 markstos_ luqui: Sure it does. I just tested it.
03:01 luqui in pugs perhaps
03:01 luqui in perl 6, perhaps not
03:01 luqui $.foo(1,2,3) calls foo
03:01 luqui for a couple weeks, ./foo(1,2,3) calls foo
03:01 luqui but then it was changed
03:01 luqui but pugs did not change it
03:01 luqui this was like a year ago
03:02 markstos_ It's metioned in Perl6::Overview::Operator, although there's hardly any other docs on it.
03:02 luqui look in S03
03:02 luqui oh, nevermind
03:02 luqui it doesn't mention either
03:02 markstos_ But I was made a simple test script where $.foo() didn't work, and ./foo.
03:02 luqui surely S12 would
03:02 markstos_ and ./foo did.
03:02 luqui okay I checked S12
03:02 markstos_ I just wanted to call one  method from another.
03:03 luqui pugs is wrong
03:03 luqui but if that's what works, I'd say use it
03:03 markstos_ I poked in ext, and saw ./foo in HTTP::Server::Simple, which is where I got the idea.
03:04 kanru joined perl6
03:05 neoesque joined perl6
03:06 pasteling "mark_" at 12.176.101.89 pasted "which is right to call another method? $.foo or ./foo ?" (14 lines, 207B) at http://sial.org/pbot/18877
03:07 markstos_ luqui: I'll use $.foo if it's more recommended, but as you can see from my paste, it doesn't work for me, when "./foo" does. Am I missing something ?
03:07 luqui markstos_, do use ./foo
03:07 luqui just understand that it will be changed to $.foo when someone gets around to it
03:08 markstos_ luqui: Ok. Then what does $.foo do ? I see that in code too. It appears to work with attributes at least.
03:08 luqui in pugs, it identifies an attribute
03:08 luqui in perl 6, it calls a method
03:08 luqui (also works for attributes)
03:08 luqui (because of a weird unification between attributes and methods)
03:09 markstos_ I'm surprised pugs doesn't implement this detail of the spec yet.
03:09 luqui I am too
03:09 luqui I would implement it, but I am suffering from a fear of pugs internals
03:09 markstos_ :)
03:09 luqui once I start, I don't think it will take me that long to get back into it
03:11 luqui joined perl6
03:15 PerlJam luqui: btw, welcome back :)
03:18 luqui thanks
03:21 bpederse_ joined perl6
03:25 markstos_ It looks it ".=" is now part of the OO system. How do I translate Perl5's ".=" to Perl6? I checked the docs some and can't find this.
03:25 TreyHarris markstos_: ~=
03:26 PerlJam markstos_: ~ is the new .  :)
03:26 TreyHarris string-concat is now ~
03:26 markstos_ Got it.
03:26 markstos_ I should have guessed, since I already figured out "~" on its own. That's logical.
03:27 TreyHarris markstos_: and to call one method from another, the canonical way, i believe, is "self.methodname($arg, @args)".  $.methodname imposes a scalar context
03:27 markstos_ "self"... with no leading "$" ?
03:28 markstos_ There is apparently also "$?SELF", which is confusing.
03:28 TreyHarris $?SELF is a compiler variable
03:28 TreyHarris markstos_: correct, just self.
03:28 markstos_ TreyHarris; Thanks. I've verified that now.
03:29 markstos_ I  think I'll go back and switch all the "./" calls I put in, since they are apparently non-standard.
03:29 TreyHarris i'm not clear on when, if ever, $?SELF may differ from self.  but self is the one to use.
03:30 PerlJam markstos_: ./ was a good dream for a while, but a bunch of people didn't like it for some reason
03:30 markstos_ I think it kind of looks neat, but "self." definitely looks more "normal"
03:30 agentzh joined perl6
03:31 PerlJam most times you won't even need to say "self" as  .method(...)  will be the same as $_.method() and $_ will be self.
03:32 TreyHarris i suppose $?SELF could be used in cases where you simply must have a variable for some introspection wizardry.
03:33 * agentzh has paid 8 US dollars to WaysOnline, so he will have a reliable IRC/SSH connection in the next 6 months.
03:33 markstos_ Really? I didn't realize I could depend on $_ to be the current object.
03:33 luqui PerlJam, we discussed that for a long time
03:33 TreyHarris PerlJam: that's been asserted, but I think it's a tenuous assertion.
03:33 luqui and some of us decided that it's a really bad idea to have $_ be the current object
03:33 * markstos_ gets the idea that self. is safer...
03:34 PerlJam markstos_: indeed.
03:34 TreyHarris it's very natural to say, "oh, i need to do this a few times", and surround previously-working code with some other code--boom!
03:34 luqui because then "call my method" is different depending on where you use it
03:34 luqui TreyHarris, exactly
03:34 luqui I don't like self. either, because it fills my code with "self"s...
03:34 luqui it's that property of perl 5 I was trying to counter with Perl6::Attributes
03:35 luqui ./ was good; I don't mind $. either.
03:35 markstos_ But "$." doesn't work right now...
03:35 luqui but it feels strange specifying the context explicitly when it is implicit in the rest of the language
03:35 luqui oh... right.
03:35 markstos_ At least we got rid of needing "my $self = shift" everywhere. Good riddence.
03:35 luqui yeah, that's a kicker for people who are actually programming :-p
03:35 TreyHarris remind me why plain ol' "meth()" can't DWIM?
03:36 luqui TreyHarris, the same reason $.foo can't be called $foo
03:36 markstos_ TreyHarris. I'll check that.
03:36 luqui because larry doesn't like not being able to tell whether it is a function or a method
03:36 PerlJam I don't like it either.
03:36 PerlJam Most importantly, perl doesn't like it :)
03:37 markstos_ luqui: I thought that's why we have "method" in addition to "sub" now...
03:37 luqui markstos_, no, i mean for calls.
03:37 luqui when you come across foo(), it's good to know at least where to look for foo()
03:37 luqui in the same class or parent class, in some module somewhere, defined earlier in the file...
03:37 markstos_ Ah. I see.
03:38 TreyHarris luqui: but multi calls are not distinguished, and a multi could literally be *anywhere*.
03:38 luqui TreyHarris, true
03:38 TreyHarris so you have to fire up the debugger or do a search on your codebase
03:38 luqui TreyHarris, they are not distinguished for a good reason though.
03:39 luqui it's one of those conflicting desires thing
03:39 luqui s
03:39 weinig joined perl6
03:39 luqui basically, if a multi is used for implementation purposes
03:39 luqui you don't want to mark the multiness on the caller's end
03:39 luqui because then if you find a better way to implement it which is not multi
03:39 luqui then you break all the code
03:39 luqui I think there is a deeper problem though
03:39 luqui the distinction between multi for implementation and multi for overloaded meaning
03:40 luqui but I also think by putting that distinction in the language
03:40 luqui we are begging people to mess it up
03:40 luqui so a compromise is a good solution... until we decide that it is not
03:41 TreyHarris well, and I can see people writing "multi sub methodname ($?CLASS $self...) {...}" in order to save themselves typing later
03:41 luqui TreyHarris, elaborate
03:41 PerlJam luqui: does this mean you're *really* back? ;)
03:42 luqui PerlJam, does what mean I'm *really* back?
03:42 PerlJam luqui: this is the most vocal I've seen you since ... well, last time you were around :)
03:42 luqui hmm...
03:42 luqui interesting observation
03:42 TreyHarris if inside your class, you write the above, then "methodname()" would work identically to "self.methodname()" defined with "method methodname() {...}", would it not?
03:43 luqui PerlJam, oh and yes I do think I am *really* back, unless school takes over my life again
03:43 luqui I set up my schedule to enable that not happening this time around, though
03:43 PerlJam TreyHarris: nope.
03:43 markstos_ TreyHarris: I just tried that in a play module, and it doesn't work.
03:43 svnbot6 r12061 | markstos++ | switched from non-standard "./" syntax to standard "self." syntax in HTTP::Server::Simple.
03:43 luqui hopefully it will work out
03:43 luqui TreyHarris, I suppose so..
03:43 TreyHarris PerlJam: ok, why not?
03:43 PerlJam TreyHarris: your multi would still need to be passed the $self parameter.
03:44 luqui PerlJam, good catch
03:44 TreyHarris oh, of course :-)
03:44 revdiablo Is the './' syntax not standard anymore?
03:44 PerlJam luqui: Well, it's good to see you engaged again at any rate.
03:44 luqui revdiablo, doesn't seem so
03:44 revdiablo Dang. I kind of liked that.
03:44 PerlJam revdiablo: I don't think it ever was "standard", just a pugsism.
03:44 luqui yeah me too
03:44 luqui but those who didn't were pretty vocal
03:45 TreyHarris i liked ./, i didn't notice it went away until a few weeks ago, and i couldn't find the discussion of why it went away.  it wasn't on p6-l...
03:45 revdiablo PerlJam: I was under the impression that it was borderline official, but I have been following less and less
03:45 luqui It went away quietly
03:45 PerlJam TreyHarris: bring it up again on p6l and see what happens
03:45 luqui because any time larry said anything about the issue loudly
03:45 markstos_ ./ works today. It just doesn't seem to really be documented officially...
03:45 luqui people complained... loudly
03:46 luqui if you look at the size of that debate
03:46 TreyHarris luqui: where?  i'll go search perl.perl6 on google, maybe it was on a list i wasn't subscribed to
03:46 luqui p6l I believe...
03:46 luqui I will try to find it
03:47 TreyHarris ugh, +"./" is not a reasonable google search term
03:48 PerlJam Try yahoo.  It's better with punctuation than google (though it may not have the right things indexed)
03:48 markstos_ TreyHarris: Yeah and searching for the "dot slash operator" won't get you much farther...
03:48 TreyHarris oh, i found it.  perl6-l, a discussion starting june 16 2005
03:49 luqui hmmm.. I don't see it in my archives
03:49 luqui what is the subject?
03:50 TimToady hi luke, pong
03:51 luqui ./method, pong
03:51 TreyHarris ah, he conjectured that you could do "use self '';" if you want that
03:51 TimToady dead unless you use self './' or some such.
03:51 TreyHarris oh, and there he is :-)
03:51 luqui TimToady, I was going to ask you to clarify some things about whatever VALID is named now....
03:51 luqui I think I'm clear on it now.
03:51 TimToady um, s* key id
03:52 luqui skid, right.
03:52 TimToady where s can be safe, static, supercalifrajilisticexpialidocious
03:52 TimToady mostly just trying for *id that isn't likely to map onto any ID the user wants.
03:53 frederico joined perl6
03:53 PerlJam TimToady: I think you hit the target
03:53 TimToady I really look at all the short *id words in the dictionary...
03:53 luqui overloading === trumps SKID, right?
03:53 TimToady presumably.
03:53 luqui i.e. the default === is implemented in terms of SKID?
03:53 luqui okay.  that was my main question.
03:53 TimToady presumably
03:53 TimToady much as default eqv is implemented in terms of, oh, say SNAP or some such.
03:54 luqui oh no... snap?
03:54 TimToady where SNAP gives you a canonical current snapshot of the thing
03:54 luqui oh, i thought it was another acronym
03:54 TimToady could be. :)
03:55 luqui actually this is getting a little less clear
03:55 TimToady but it could just be any kind of freeze or pickle or whatever
03:55 luqui SKID returns a value type?
03:55 PerlJam I sure am glad most of the METHODS get called implicitly for me :)
03:55 TimToady eqv is more-or-less would these two things serialize the same right now?
03:55 luqui actually, could you just give me an example of, say, a SKID for a 2D vector value type?
03:56 TreyHarris TimToady: isn't it unfortunate Huffmanization for "self.routinename" when within a class, you're going to call other methods of the class quite frequently?  or do you imagine that people will prefer the "$." and "@." forms, and only switch to "self." when they actually need a dynamic context for the call?
03:56 TimToady value types typically just return themselves
03:56 TimToady which of course means they'd better overload === :)
03:56 luqui oh.  so, what would override SKID which is not a value type?
03:56 TimToady I think the $.foo form will prevail
03:57 TimToady something that's not a value type that wants to be a value type.
03:58 luqui so, like, a vector class?
03:58 TimToady sure
03:58 luqui so then how would you write SKID for a vector class?
03:58 * luqui feels like he already asked this question :-)
03:59 TimToady method SKID { return self }
03:59 luqui oh.  you feel like you already answered it. :-)
03:59 TimToady s* also stands for "secret".  doesn't have to stringify.
03:59 luqui and then === gets two vectors, how does it compare them?
03:59 TimToady (by defualt)
04:00 TimToady using the overridden ===
04:00 luqui oh, so the vector class would override ===, too.
04:00 luqui I see.
04:00 TimToady which i just said too.
04:00 luqui yeah, well, I was getting confused with all this talk about things which aren't value types which want to be
04:00 PerlJam perl6 needs a "pretend" operator
04:01 TimToady generally, you only have to worry about ===
04:01 PerlJam unless you're on the SKIDs
04:01 luqui TimToady, so is overriding SKID the thing that tells perl to give this value rather than reference semantics?
04:01 TimToady if you override it right.
04:01 luqui er. wait.
04:01 luqui the thing that does that is simply not to provide any mutators.
04:02 TimToady that too.
04:02 luqui I've been doing a lot of ruby programming, and I noticed something interesting
04:02 luqui you're not allowed to override +=.
04:02 luqui instead it just interprets it as an = and a +
04:03 luqui so it behaves like a value type in that situation
04:03 luqui and there's nothing you can do about it.
04:03 luqui which, in a way, seems right.
04:03 luqui isn't that after all what += is supposed to mean.
04:04 luqui If I see: $foo = $bar;  $foo += $baz;
04:04 svnbot6 r12062 | markstos++ | little code alignment improvement
04:04 TimToady depends on how "meta" the metaoperator is, I guess.
04:04 TimToady we don't let people redefine hypers.
04:04 luqui I would either like to assume that if $baz != 0, $foo != $bar.
04:04 luqui or assume that $foo == $bar no matter what
04:04 luqui no matter what kind of thing is in that variable
04:04 luqui on the other hand, maybe this is just my value-type bias comin gout
04:04 luqui *coming out
04:04 TimToady that's why our preference is to move out to unicode rather than to overoverload
04:05 TimToady I'm the one who's old enough to have gout comin
04:06 TimToady but as you well know, mostly I just wave my hands on all this and wait for Audrey to tell me which parts of it make sense. :)
04:06 PerlJam TimToady: is there a top-10 list of language features that need more flesh or do you guys (or just you) work on what people are asking about?
04:07 TimToady er...kinda
04:07 luqui TimToady, so perl 6's design is starting to become implementation-driven?  Or audrey is starting to think more about design?
04:07 PerlJam luqui: little of both from where I'm sitting
04:07 TimToady could definitely use some more expertise in the multiprocessing/event/stm area
04:08 TimToady yes, we've been mostly implementation driven for a year or so now.
04:08 TimToady and we're starting to be teacher driven
04:08 luqui hmm?
04:08 TimToady people coming back and saying "we don't know how to teach this clearly"
04:08 luqui ahh
04:08 PerlJam merlyn strikes again!  :)
04:08 TimToady among others...
04:09 TimToady so some of the recent renamings have been for that reason
04:09 TimToady env vars are now context vars
04:09 luqui is that the declarator?
04:10 TimToady though .elems is still .elems for the moment
04:10 TimToady not any more.  "is contextual" or some such
04:10 TreyHarris but they still go to the environment eventually, right?  so $+HOME will work like $ENV{HOME}?
04:10 TimToady so you can put it on parameters, for instance.
04:10 luqui you know, I always feel yucky when I use .length in ruby
04:10 TimToady or on state variables.
04:10 luqui I like the .elems/.chars distinction
04:10 TimToady heh
04:11 TimToady I like the plural-means-count'em consistency.
04:11 TimToady but it could be, say, .items
04:11 PerlJam items does have the benefit of being an actual word
04:12 TimToady nod
04:12 PerlJam But I still like elems as I'm always talking about "array elements" and it's easy enough to get to "elems" from ther.
04:13 TimToady well, guess why it's still .elems...  :)
04:13 vsoni left perl6
04:13 TreyHarris i'd expect .items to be how i get a list out of a container.  so i'd expect it to act like P5 @a... scalar context, length; list context, elements inside.
04:13 PerlJam TreyHarris: you're just weird  ;)
04:14 luqui I'm not that much of a naming fanatic--that's more your and Damian's turf--but I'll point out that "context" is one of the most overloaded words in computer science.
04:14 TreyHarris PerlJam: or maybe i had a bad data structures professor.  he used the word "items" that way.  like "the items in the b-tree", etc.
04:15 TimToady yes, well, be we haven't overloaded context yet.  oh wait...
04:15 TimToady *but
04:16 * PerlJam is waiting for @Larry to run out of good names to use and just start making up terms  "this is a snee variable.  What's a snee? Well, I'm glad you asked ... "   :-)
04:16 TimToady but Audrey argued that this context is consistent with our current use of context already.
04:16 luqui in a way it is
04:16 TimToady it's a SKID
04:16 luqui but in another way, that makes it worse
04:16 luqui no, that's the same way
04:16 TimToady same argument for env
04:17 luqui true...
04:17 luqui $+FOO = 42  doesn't set a shell environment var
04:17 PerlJam Then clearly they should be "habits" and "habitual variables"  :)
04:17 TimToady but we haven't use the word "context" in the language before now, so at least that's okay.
04:17 TimToady who was it suggested "ambiance"?  :)
04:18 jmf milieu
04:18 PerlJam (but maybe "habitat" makes more sense in an environmental way :)
04:18 xinming joined perl6
04:18 luqui that's true.  the type expected from a return might evolve a name like "sigil" did
04:18 TimToady habitable variables, and canada...
04:18 TimToady it's called "want"...
04:19 TimToady which is currently defined as &return.signature
04:19 luqui oooh, yum, &return
04:19 luqui is that how you take the current continuation?
04:19 TimToady shh
04:20 luqui sub callcc(*&code) { code(&return) }
04:22 luqui any mind-blowingly major changes I should know about?
04:22 PerlJam luqui: did you leave before or after Captures?
04:23 luqui not sure.
04:23 TimToady you could svn diff
04:23 luqui uh, yeah.
04:23 TimToady or svn log
04:23 luqui but... that would take a long time to read.
04:23 luqui that would take a shorter time to read
04:24 luqui stupid version control, making me do stuff to find stuff out... :-)
04:24 luqui instead of relying on people's memory... which is much more reliable.
04:24 PerlJam TimToady: did you ever decide what to do with the modifier form of if/unless/while/until/etc?
04:25 luqui PerlJam, what is wrong with it?
04:26 PerlJam luqui: problems parsing meaning in the absence of trailing semi-colons on some blocks.
04:26 TimToady that's partly why we now have "unspace"
04:26 TimToady (backslashed space)
04:27 luqui backslashed... any whitespace right?
04:27 TimToady yes
04:27 luqui whew
04:27 TimToady we like generality
04:27 luqui we like not having to worry about whether your editor thinks there is whitespace after this character or not
04:27 TimToady comments and pod count as whitespace
04:27 luqui so \#foo is an unspace?
04:27 TimToady yes
04:28 TimToady lasting till the first non-whitespace on the next line, or wherever
04:28 PerlJam \#{ and this is a
04:28 luqui lasting till the next non-whitespace I would imagine
04:28 PerlJam multi-line unspace}
04:28 TimToady yes.
04:28 luqui oh, that will make a few people happy
04:29 TimToady luqui: you were here for #{...} right?
04:29 luqui in the last two weeks, I have been asked four questions about perl
04:29 luqui three of them were "does perl have a multiline comment"
04:29 luqui I don't recall.
04:29 luqui it's not very important to me, but I don't remember it.
04:29 TimToady it's there more for future proofing grammar changes
04:30 luqui you mean so we don't end up with 500 ways to do a multiline comment?
04:30 jmf TimToady: is there a BNF for the grammar anywhere?
04:30 TimToady yeah, or simply that someone introduces a grammatical change that makes them make more sense.
04:30 luqui jmf, I'd doubt it, because perl 6 is not context-free
04:30 TimToady same for unspace policy.
04:31 luqui jmf, or not obviously context-free in any case
04:31 TimToady there is essentially a BNF for the *initial* standard P6 grammar.
04:31 TimToady but any lexical scope is free to evolve to a higher plane of existence
04:31 TimToady or a lower...
04:31 luqui I wouldn't call it a BNF...
04:31 TimToady I use the term loosely
04:32 PerlJam TimToady: I think it's more like an LWF grammar :)
04:32 jmf i mean is there one where I can see it...
04:32 TimToady but the point is that the revisions are intended to be coded in the same system
04:32 TimToady with limitation of damage to particular rules
04:32 PerlJam jmf: there's one that comes with parrot
04:32 TimToady so we don't fall into the source filtering fiasco quite so quickly.
04:33 PerlJam jmf: parrot/languages/perl6/src/grammar_*.pg
04:33 jmf ahh thanks
04:33 TimToady I think the one in pugs is more advanced, but you still have to wade through the P5 wrappers at the moment.
04:34 TimToady this should change soon, since apparently the p6-on-p6 effort is very close to bootstrapping.
04:35 jmf would it be useful to make a p6 module that generates pseudo-random expressions for testing/crosstesting purposes?
04:35 luqui jmf, not for regression tests
04:35 luqui because you would have to check your generator
04:36 luqui I think pugs's test suite will be fine
04:36 jmf well i meant more for testing multiple implementations
04:36 luqui s/test/massive test/
04:37 TimToady I think the test suite needs to be about 4 times bigger than what it is, at least.
04:37 luqui jmf, so you would do correlation: X works here but not there
04:37 PerlJam jmf: so how would that work exactly?  Generate some random expression and then see which implementations accept it and which decline?  Then what?
04:37 jmf then you would have output of which they differed on
04:37 luqui and a human would look at the output
04:38 luqui and go, yep, that's nonsense all right
04:38 jmf yes, presumably
04:38 PerlJam the generated expressions had better be fairly small then
04:39 PerlJam or you'd need a tool that chops the expression into parts until you find the part that doesn't parse
04:39 jmf well yes...and no
04:40 jmf i guess you would want many little-medium sized expressions
04:40 jmf but that doesnt mean you couldnt generate blocks as well
04:40 PerlJam jmf: also, once you have the expression, would you also generate strings to match it against?
04:40 PerlJam jmf: or would the expression actually be a generator?
04:40 luqui PerlJam, huh?
04:40 jmf well i was thinking there would be no good way to do that
04:41 jmf unless you crosstested with another language...
04:41 jmf but that would make it a much bigger module
04:42 jmf i suppose for any part of the language that is easily mapped to another, say python, you could also generate expressions from that subset and compare
04:42 drbean joined perl6
04:42 PerlJam luqui: I took "expression" in the context of "regular expression" or "perl6 rule expression".  Perhaps that was a poor direction to go :)
04:43 EdLin joined perl6
04:45 luqui yay .fmt!
04:46 TimToady except .as may be going away, so we could reclaim it
04:46 luqui where will .as go?
04:46 TimToady Type($x) or $x.Type
04:47 luqui er.. wasn't there a time when you were considering $x.Type
04:47 TimToady could still have infix:<as>, but it would mean one of those.
04:47 TimToady oh, probably.
04:47 luqui and then decided that it polluted the method space too much?
04:48 luqui or something.
04:48 TimToady what we have currently is that $x.method fails over to method($x)
04:48 TimToady so it wouldn't hide an explicit method declaration
04:48 luqui and if you had:  $foo = Type;  $foo($x), that would be the same thing?
04:49 luqui essentially types can be called, and their action is a typecast...
04:49 TimToady yes
04:49 TimToady only works for single args though, by default.
04:50 luqui so no Type($x,$y)
04:50 luqui that doesn't make sense to me anyway
04:50 TimToady and only if you've declared an explicit coercion
04:50 luqui oh, that's a bit different
04:50 TimToady only builtin types like Int and Str coerce implicitly
04:50 PerlJam luqui: Line($point1,$point2)  # cast two points into a line  ;-)
04:51 luqui this is to releive the pain that we were talking about yesterday?
04:51 TimToady you can certainly write a multi-arg constructor
04:51 TreyHarris so if you have a method .Type, that would mask the coercion?  or it would be your own implementation of coercion?
04:51 luqui where the argument to .as needs to be considered covariantly?
04:51 TimToady that's why we're getting rid of .as, because it really wants to be contra
04:51 frederico joined perl6
04:52 luqui .as just needs to do dispatch on context
04:52 luqui which (as TSa corrected me long ago) is covariant
04:52 luqui anyway, that's just the terminology, probably best not to use it at all
04:52 TimToady anyway, .as was just a way to disguise the writing of a constructor for someone else.
04:53 luqui oh, so we're going C++-style where casts are constructors
04:53 TimToady so maybe it's now just "method ::OtherType"
04:53 TreyHarris contra mmd is just ordinary method dispatch, isn't it?
04:53 TreyHarris on a single arg
04:53 luqui TreyHarris, right
04:58 TimToady Type($x) is probably guaranteeing you a new object, at least in the abstract, though you can play COW games.
04:58 TimToady $x but Type is a cast
04:59 TimToady which may or may not copy $x depending on whether it already supports Type
04:59 TreyHarris a cast?  it's casty, but it's not a cast like any other language's cast that i know of.  "2 but False" keeps its 2-ness
04:59 luqui unrelated: does &?ROUTINE inside a method refer to the routine bound to the invocant, or does it need to be given another invocant
04:59 TimToady well, it's a mixin
04:59 TimToady but it doesn't change 2, but a copy of 2
04:59 luqui i.e., to call yourself inside a method, do you say $?ROUTINE(args) or self.$?ROUTINE(args)
05:00 TimToady the first won't work unless you pass self explicitly.  the second probably works
05:01 agentzh joined perl6
05:01 PerlJam $?ROUTINE.call($?CAPTURE)  isn't it (or whatever the right syntax is)
05:01 PerlJam How do you get at the current routine's capture?
05:02 TimToady you don't, unless you've declared a capture parameter
05:02 luqui okay, unbound
05:03 kanru joined perl6
05:04 PerlJam Seems like that should be part of the contextual stuff that perl gives you implicitly.
05:07 lidden joined perl6
05:07 marcus_ joined perl6
05:07 TimToady joined perl6
05:07 cookys joined perl6
05:11 rashakil__ joined perl6
05:16 Eidolos joined perl6
05:16 mugwump joined perl6
05:19 luqui joined perl6
05:19 arguile joined perl6
05:19 luqui ... so...much...syntax...
05:19 luqui have my idle comments upon reading the svn log been recieved?
05:20 shachaf joined perl6
05:21 TimToady received where?
05:21 TimToady not here.
05:21 luqui there was some disconnecty thing going on
05:21 luqui I will save the important ones:
05:22 luqui er, relatively important.
05:22 luqui There are no builtins which default to $_ anymore?
05:22 TimToady yak-shed painting...
05:22 TimToady to the first approximation, yes.
05:22 TimToady m/foo/ does though
05:22 luqui okay.
05:23 luqui what's this Capture business?
05:23 TimToady typeglobby/fatref base class for Arglists and Matches and XML nodes.
05:24 luqui uhhhh...
05:24 TimToady what naturally matches up against a Signature
05:24 * luqui reads the relevant portion of S06
05:26 luqui .call does not introduce a CALLER frame, but does it return?
05:26 luqui is it goto &sub or something else?
05:26 TimToady yes, it returns.
05:26 TimToady (to the current place)
05:27 TimToady so you can put both pre and post wrapper stuff around any .call
05:27 TimToady otherwise you could just use 'next METHOD' or some such.
05:27 luqui S06, line 713: Parameters before the List ...
05:27 luqui do you mean Capture, or is List correct?
05:27 luqui and if so, what is a List?
05:28 TimToady fossil, I think.
05:28 TimToady pre-capturian
05:29 luqui hey, I have joined the archaeologist crew
05:29 PerlJam yeah, but your job here should be to smash the fossils against a convienent wall rather than preserve them.
05:30 PerlJam er, no pun intended there.
05:30 luqui haha
05:31 luqui I'm taking my job as to look at the fossils which have been smashed against the wall, what has been falsely planted in their place
05:31 luqui and smash the replacements which don't make sense against The Wall
05:31 meppl joined perl6
05:32 luqui my grammer no good work
05:32 PerlJam grammer and speling are for the weak!  :-)
05:33 luqui you mean the week, right?
05:33 PerlJam well, I can't help but spell what I think sometimes.
05:33 PerlJam curse my pedantic fingers for ruining a good joke  :)
05:33 TimToady lessee, what else changed.  infixes with null right arg went away, so $x... became $x..*
05:34 xinming :quit
05:34 xinming oops. sorry
05:34 luqui TimToady, caught that one
05:34 TimToady loop...while became repeat...while
05:34 luqui also the death of prefix *
05:34 TimToady hence [,] all over
05:35 luqui which is interesting, because its death deemed my next futile junctions proposal unworkable
05:35 luqui as far as junctions go, I keep coming up with ways to make them better, but I've decided that I'll keep them to myself.
05:36 luqui oh, how is signature-wise decomposition going?
05:37 luqui sub foo([$x,$y, Bar($z)]) {...}
05:37 TimToady it's been waiting on the new pugs rev
05:37 TimToady which is mostly about Captures and Signatures
05:37 luqui kay
05:38 TimToady but it will definitely be nice to write tree transformations in Perl rather than something else.
05:38 luqui good
05:38 TimToady well, for Perl programmers, anyway. :)
05:38 TimToady Haskellers may yawn...
05:39 luqui I imagine (hope) that there is no integrated AG support
05:39 TimToady sounds like a module to me.
05:40 luqui I think that's where it belongs
05:41 luqui reading the svn log in reverse is kind of nice
05:41 luqui because I see you fix the insanity before I se eyou introduce it
05:41 luqui so I don't have to complain
05:41 TimToady :P
05:42 TimToady on the other hand, if you just diffed from several months ago, you wouldn't have to see the intermediate forms at all.
05:42 TimToady on the gripping hand, you'd say "where the heck did that come from?!?"
05:43 luqui I think the log is better, because the synopses would show me the changes in a strange order
05:43 luqui in a "where the heck did that come from" way
05:43 luqui and all I usually need is a short description
05:43 luqui because we've considered most of these changes before anyway :-)
05:43 TimToady though some of the comments are more indicative than informative.
05:44 luqui I read the diff from a given revision when I need more info
05:44 TimToady figgered
05:44 TimToady well, as with the original RFCs, a lot of ideas don't make sense in isolation, but when you see a way to unify several things, you go for it.
05:44 luqui rule dne?
05:45 TimToady dne?
05:45 luqui does not exist?
05:45 TimToady rule means :ratchet :sigspace now
05:45 TimToady regex is old rule
05:45 luqui oh, so rules behave like parsec now?
05:45 TimToady :D
05:45 luqui with :ratchet that is?
05:45 TimToady only better
05:46 TimToady no backtrack by default is what it means
05:46 TimToady implicit : after any term that makes progress
05:46 luqui where 'backtrack' means 'make the character pointer smaller'
05:46 TimToady yes
05:46 weinig is now known as weinig|sleep
05:47 luqui that seems to catch errors in the right places
05:47 TimToady hope so
05:47 TimToady we'll know more when p6-on-p6 is running full tilt
05:47 * PerlJam still thinks :sigspace needs a new name (but he still also has no better alternatives)
05:47 luqui PerlJam, I think it is plenty descriptive
05:47 luqui better than SKID :-)
05:48 TimToady SKID is sort of obfuscated on purpose
05:48 PerlJam SKID is meant to be obscure and it succeeds admirably IMHO
05:48 luqui at least it is not misleading like .valid
05:48 TimToady thx
05:48 bcorn joined perl6
05:48 TimToady well, it wasn't misleading when .valid returned false like .defined, but we decided that was stupid.
05:49 luqui I suppose that SKID's main purpose is to not have anyone assume they know what it means
05:49 TimToady whereas people *think* they know what === means...
05:50 agentzh joined perl6
05:50 luqui imperative languages have such trouble with equality
05:50 agentzh luqui: welcome coming back to Perl 6!
05:50 TimToady imperative languages like Lisp...
05:50 luqui :!foo?
05:50 luqui agentzh, thanks
05:51 luqui yep.
05:51 TimToady got tired of :foo(0)
05:51 luqui oh, I like.
05:51 luqui Lisp had trouble with equality because it couldn't decide whether it was imperative or functional
05:51 TimToady so did everyone else.  the only problem is that ! is often a shell history characgter
05:51 TimToady so might not get adopted for cmd line args
05:52 luqui oh right
05:52 luqui heh, ruby needs a better doc program
05:52 TimToady which was part of the reason for going with :foo
05:52 luqui ri Object#methods
05:52 luqui oh, crap, I mean ri 'Object#methods'
05:52 PerlJam fix the shells.  They're not immutable :)
05:53 TimToady I already fixed my shell.  histchars=',;'
05:53 TimToady comma is a lot easier to type than !
05:54 TimToady course, that doesn't help with arguments like :foo(1,2,3)
05:54 TimToady :foo<a b c> isn't too shell-friendly either
05:54 luqui shells stole all the brackets
05:54 luqui there's not much you can do
05:55 TimToady all the ASCII brackets...
05:55 luqui mwahahaha!
05:56 luqui <<<...>>>???
05:57 TimToady q[[[  ]]]
05:57 frederico joined perl6
05:57 TimToady #((  ))
05:57 luqui oh, it wasn't referring to rules?
05:57 TimToady might have been, where was it?
05:57 luqui let me look at the diff
05:58 TimToady I think that went away when we stole << back for directional word boundary
05:58 luqui alrighty
05:58 TimToady since we can't have \< and \>
05:58 TimToady << and >> are next best thing
05:58 TimToady and people will use them all the time.
05:59 TimToady \b got demoted to <?wb>, partly to make \b always be backslash again
05:59 TimToady backspace rather
05:59 TimToady though doubtless we'll have to outlaw \b in regexen for a while.
06:01 luqui you know, I've never needed the distinction between \< and \> in vim
06:01 luqui \b would always have sufficed
06:01 luqui on the other hand, false positives are much easier to deal with in an editor environment
06:02 luqui is long dot dead?
06:02 TimToady long dot is now spelled unspace
06:02 TimToady $x\    .foo
06:02 luqui right
06:03 luqui okay, I think I'm pretty much up-to-date about everything but rules
06:03 luqui And I'll make a thunk for them
06:03 TimToady and not a lot has changed there
06:04 luqui the design wasn't the hard part
06:04 luqui learning the pugs codebase again will probably be a bit more challenging
06:05 luqui especially since I have been away from Haskell as long as I have been away from Perl
06:05 luqui and fp in general
06:05 TimToady well, they're rewriting it all right now, so it should be as easy for you as them.  :)
06:05 luqui :-)
06:05 luqui they're always rewriting it all
06:06 TimToady learning Haskell itself is easy--I've done it several times already
06:06 luqui haha
06:07 xerox ?remember TimToady learning Haskell itself is easy--I've done it several times already
06:07 lambdabot Done.
06:07 xerox hehe
06:07 TimToady hihi
06:07 luqui howhat?
06:08 ruz is there bootstrapping svk snapshot of pugs available?
06:08 xerox pugs needs boostrapping now?
06:08 luqui error: too many adjacent terms in ruz line 1
06:09 gaal TimToady: what about the ieda that for native types, a value's skid is itself? (that's the assumption for new Val stuff)
06:09 TimToady backlog and you'll see me saying that already
06:09 gaal I don't see it mentioned in r10758 synopsis patch
06:09 luqui oh, right, that discussion
06:09 ruz xerox, luqui: snapshot like http://www.parrotcode.org/svk-bootstrap-dump.bz2
06:10 luqui so what is an example of something that would return a SKID other than itself
06:10 gaal ruz: there isn't one online (that I know of)
06:10 gaal luqui: non-native values...
06:10 TimToady well, a native unboxed type probably actually has to return a boxed version of itself to capture the type info
06:10 luqui not according to the discussion
06:10 gaal luqui: for mutables or externals (e.g. a file handle) you'll get a memory address
06:11 luqui oh, SKID exists for things that aren't value types?
06:11 luqui er
06:11 luqui no
06:11 luqui I understand
06:11 luqui wait---no, I don't
06:11 luqui I don't see the purpose of SKID, I suppose
06:12 TimToady A skid is like a hash key
06:13 TimToady "how do I capture something immutable for a hash key from this type?"
06:13 luqui so it needn't be unique...
06:13 luqui otherwise I could see using it for "eqv", not "==="
06:14 gaal presumaby it is unique within the type.
06:14 TimToady it needs to be as unique as you need it to be for value vs object semantics
06:14 gaal the tuple ($x.META.SKID, $x.SKID) oughta be unique in this process.
06:14 dduncan joined perl6
06:14 TimToady eqv is trying to do a deep compare of mutable values
06:15 dduncan TimToady, another great Synopsis rev 10758
06:15 dduncan and thanks for throwing in my request too
06:15 TimToady it's actually the semantics of P5 hash strings, where we take a snapshot of the string
06:15 luqui gaal, you mean so $x.type === $y.type and $x.SKID === $y.SKID implies $x eqv $y?
06:15 TimToady to use for the key.
06:15 luqui TimToady, is that something implementation-level?
06:15 luqui because strings in p5 are immutable
06:15 TimToady SKID contains the type
06:15 dduncan SKID certainly works better than .valid too
06:15 TimToady no they're not.
06:16 dduncan .valid was cute, but could be so confusing to people
06:16 dduncan thinking it validated something
06:16 luqui $x = "foo";  $y = $x;  something($y);  # can $x possibly change?
06:16 TimToady hash keys are immutable copies of mutable strings.
06:16 gaal oh, SKID contains type? ok, I'll go back under the surface....
06:16 luqui so is it true that $x.SKID === $y.SKID implies $x eqv $y?
06:17 TimToady no
06:17 dduncan I would think that every value has a type by definition
06:17 dduncan including the SKID
06:17 dduncan since every value is from some domain or other
06:17 TimToady unboxed types don't represent that
06:18 TimToady $x.SKID == $y.SKID is only going to compare "addresses" for object types
06:18 luqui TimToady, my int $x = 1; my Int $y = 1;  $x.SKID === $y.SKID?  $x eqv $y?
06:18 TimToady $x eqv $y is deep compare
06:19 luqui then I don't see a difference between $x.SKID and $x.
06:19 TimToady not clear whether type comparison of === and eqv imply autoboxing
06:20 TimToady there is if $x's class chooses to define SKID differently.
06:20 luqui which would happen when...
06:20 TimToady it wants to pretend to be a value type to some extent, but have extra fields that don't count, say...
06:20 ajs_home joined perl6
06:20 luqui I keep asking the same questions.  Seems like you give me answers which make sense, but I keep coming up with the same questions...
06:20 dduncan indeed
06:21 dduncan eg, extra fields could store an index to the actual value fields, to speed up its use, but don't count towards the vaue
06:21 luqui TimToady, oh!
06:21 dduncan value
06:21 luqui I just did that in C++
06:21 luqui it felt very hacky
06:21 luqui but it was necessary
06:21 TimToady indeed
06:22 luqui so in "normal" usage it doesn't make sense to override SKID
06:22 TimToady by and large, yes
06:22 dduncan depends on what "normal" is
06:22 luqui I thought it was a prereq for being a value type
06:22 dduncan in some problem domains, "normal" is SKID = value
06:23 TimToady only if you're trying to make something mutable act immutable
06:24 TimToady but for truly imutable types, the object "ref" is also acting immutable
06:24 TimToady so really only === needs to behave
06:24 luqui got it
06:24 luqui whew
06:24 dduncan true enough
06:25 TimToady if you'll recall, we left .id out for a long time due to similar reasoning that it was the comparison that was important.  but not always
06:25 TimToady in fact, we thrashed on that in Portland, if I recall...
06:26 luqui I remember something like that
06:26 dduncan in the normal use case for my Relation type, I envisage that === is the only thing that needs to treat 2 relations as values
06:26 dduncan its less likely that one would ever be used as a hash key ...
06:26 dduncan except maybe in an index hidden away behind the scenes
06:27 luqui dduncan, likelihood really shouldn't play into it
06:27 dduncan and computing a SKID could be expensive, so sometimes only === is the most useful
06:27 TimToady bingo.  but with Perl 6 we hope it's chortles all the way down.
06:27 dduncan sure, a SKID would be provided anyway, but I anticipate it won't be necessary to use it most of the time
06:28 dduncan and if === is also overloaded and presumably then is used rather than the generic === with 2 SKID values, the most frequent use cases would be faster
06:28 TimToady because === can short circuit
06:28 TimToady this is even more important for eqv
06:28 TimToady which potentially has to serialize both objects
06:29 TimToady or otherwise canonicalize, and would be better to do that lazily.
06:29 luqui if that's the case, we really need to enforce regularity in the serialization algorithm
06:29 dduncan when you say === short-circuits, I assume you mean that it implicitly does a =:= first, before even invoking any .SKID ?
06:29 dduncan or some other kind of short-circuit?
06:30 TimToady I mean if you've got two objects with 582 attributes, it doesn't have to serialize all attributes if the first pare are !eav
06:30 TimToady *eqv
06:30 TimToady *pair, darn it.
06:30 marmic joined perl6
06:30 dduncan yes
06:31 TimToady doesn't have to produce the whole relation to tell if they're unequal
06:31 dduncan that would easily be why an object's own === function would short circuit in that way ... but presumably the generic === implementation can't see the internals and won't do that
06:31 dduncan unless it checks public attributes
06:32 TimToady I doubt the generic === will try to optimize.
06:32 dduncan yes
06:32 TimToady we should encourage types to write their own === where appropriate.
06:32 dduncan and so I certainly would define a === myself, just for the short circuiting
06:32 TimToady and eqv
06:32 dduncan which would be very significant for a large type like a relation
06:32 TimToady well, for ordinary objects === is just type and address
06:32 TimToady eqv is the deep one
06:33 luqui dduncan, are your relations value types?
06:33 dduncan yes
06:33 dduncan they are as much value types as Seq or Set or Mapping are
06:33 luqui makes sense
06:35 luqui oh!
06:35 luqui OH!
06:35 luqui Yes, you separated Hash and Mapping!
06:35 dduncan I know that much!
06:35 luqui that makes me a happy panda.
06:35 dduncan me too
06:37 TimToady I wonder if we should rationalize the mutable vs immutable type names better.
06:37 dduncan it means I can use those 3 types to help implementing mine, and so can save a lot of extra work when one relation is derived from another, or its member tuples or attribute values are returned ... I don't have to explicity copy them
06:38 dduncan er, they don't need copying at all, and they stay safe from tampering
06:38 dduncan at least with Hash vs Mapping, they seem rationalized
06:39 luqui it strikes me that a Hash is just a reference to a Mapping
06:39 luqui with some extra methods...
06:39 dduncan yes, Hash.does(Mapping)
06:39 dduncan just as Array.does(Seq)
06:39 dduncan I assume
06:39 dduncan and Relation.does(Set)
06:39 luqui Array.does(List) I imagine
06:40 dduncan doesn't the List include lazy components?
06:40 luqui yeah... can't Arrays?
06:40 dduncan if they can, I didn't realize it ... not sure if it makes sense to?
06:40 TimToady distinguishing from Seq I think
06:40 TimToady yes, they can
06:41 TimToady Array := List
06:41 luqui did you mean to say that Arrays and Lists are the same thing
06:41 luqui or was that abstract syntax?
06:41 TimToady @foo := (1,2,3); push @foo, 4;  # BOOM
06:41 lambdabot Maybe you meant: faq todo yow
06:41 TimToady abstract
06:42 luqui okay
06:42 luqui @foo := (1,4,7,3..*)
06:42 lambdabot Maybe you meant: faq todo yow
06:42 luqui quiet lambdabot
06:42 luqui uh.
06:42 luqui answered my own question
06:42 luqui nevermind
06:43 TimToady ?eval @foo := (1,4,7,3..*);
06:43 evalbot_12060 is now known as evalbot_12062
06:43 evalbot_12062 Error: Bind to undeclared variable: "@foo"
06:43 TimToady ?eval my @foo := (1,4,7,3..*);
06:43 evalbot_12062 \1
06:43 luqui \1 huh?
06:43 TimToady hnng
06:43 TimToady bug, I think
06:43 luqui ?eval my @foo := (1,4,7,3..*);  print @foo.elems;
06:43 evalbot_12062 Error: No such sub: "&elems"
06:43 luqui um
06:44 luqui ?eval my @foo := (1,4,7,3..*);  print @foo;
06:44 evalbot_12062 OUTPUT[1] Bool::True
06:44 luqui that's a little odd
06:44 dduncan what about @foo.values?
06:44 luqui ?eval my @foo := (1,4,7,3..*);  print @foo.values;
06:44 evalbot_12062 Error: Not a keyed reference: VInt 1
06:44 dduncan shouldn't you be able to do that though?
06:44 luqui so @foo literally becomes 1
06:44 TimToady ?eval my @foo := [1,4,7,3..*];  print @foo.values;
06:44 dduncan do keys, values, kv, pairs, but the keys are indicies with arrays
06:45 evalbot_12062 OUTPUT[pugs: out of memory (requested 1048576 bytes)
06:45 TimToady it works!
06:45 luqui yay
06:45 TimToady but Seq obviously is a bit lacking yet
06:45 TimToady or List, or whatever it thinks it is.
06:46 TimToady ?eval my @foo := [1,4,7,3..10]; say @foo;
06:46 evalbot_12062 OUTPUT[1 4 7 3 4 5 6 7 8 9 10 ] Bool::True
06:46 TimToady ?eval my @foo := (1,4,7,3..10); say @foo;
06:46 evalbot_12062 OUTPUT[1 ] Bool::True
06:47 * luqui considers writing an Ordinal module
06:48 TimToady for 0..*₁
06:48 luqui ?
06:48 gaal ?eval continuum hypothesis
06:48 evalbot_12062 Error: No such sub: "&hypothesis"
06:48 elmex joined perl6
06:49 TimToady should read as subscript 1 following *
06:49 luqui that is how it reads
06:49 luqui oh
06:49 luqui I get it
06:49 TimToady or should it be superscript?
06:49 luqui no, subscript is right
06:49 luqui if you were trying to say the smallest uncountable ordinal
06:49 luqui er, smallest uncountable Whatever
06:50 TimToady no, I was aiming for the next one.  :)
06:50 TimToady smallest would be *₀ wouldn't it?
06:50 luqui *uncountable*.  I would say * is the smallest infinite ordinal
06:50 luqui er, infinite Whatever
06:51 luqui which is smaller than the first uncountable one
06:51 TimToady hmm, ** is indeterminate dimensionality, so maybe it gets to *₁ or so
06:51 * luqui is having second thoughts about this module
06:52 * luqui is having omega_1st thoughts about this module
06:52 TimToady or maybe it's more like ω
06:52 TimToady heh
06:52 TimToady it's definitely getting kinda surreal
06:54 luqui <0|0>
06:54 luqui oh, conway called <0|0> *, didn't he?
06:54 luqui uh, the other conway
06:54 TimToady not familar with the darth vader notation
06:55 luqui I never really understood the non-numeric surreals
06:56 TimToady anyway, * isn't limited to numerics.  it's really about explicitly asking the operation in question to dwim something reasonably maximal.
06:56 TreyHarris one of these days, i gotta figure out how to make it so I can see what you guys are typing when you go out of ascii.  i suspect that a blinking, white-on-black I with umlauts was not what you typed :-)
06:56 TimToady 'a'..* also works
06:56 luqui right I gathered that, but I couldn't find a neat mathematical analogy for that
06:56 TimToady I believe the mathematical formulation is
06:57 TimToady ....then a miracle happens...
06:57 luqui physicists say "symmetry" in that situation
06:57 TimToady 4. profit
06:57 TimToady oh, wait, that /.
06:58 luqui I think it be time for food
06:58 luqui what do students eat...
06:58 luqui oh yeah, taco bell!
06:58 TimToady chow for now
06:58 luqui bbiab
06:58 TimToady bedtime &
06:59 dduncan speaking about rationalizing type names ... or something ... is it actually useful for the descriptions of most|half of the types in S06 to be described as "Perl ..."?  The whole language is Perl after all
07:00 TimToady some of them could probably change to "boxed"
07:01 TimToady well, now that it's tomorrow, I really should go sleep. &
07:01 dduncan good night
07:01 gaal luqui: data Surreal = Surreal { left :: Set Surreal, right :: Set Surreal }
07:02 gaal I think he called it 0.
07:02 gaal {} | {} that is
07:02 gaal 0 | 0 is not a number.
07:04 luqui gaal, then what was *
07:04 luqui * < 0 and * > 0 or something weird like that
07:04 gaal I no longer have a copy around...
07:05 dduncan left perl6
07:05 luqui I have onag around here somewhere
07:06 luqui but it is buried in a pile of other books
07:06 luqui I don't really want to look
07:06 gaal don't want to risk an avalanche...
07:07 luqui yep, wikipedia confirms that {0|0} is called *
07:07 TreyHarris that's surreal...
07:07 luqui an unconditional first-player win
07:07 gaal oh
07:08 gaal that's a little out of field for me right now, I'm just fixing the regular infinity
07:09 luqui that sentence made not sense
07:09 gaal in pugs :)
07:09 luqui ahh
07:18 gaal oy. I'm defining a type. when it was simple I could 'newtype' it and add funky derivations; but now I've added variants to it and can't use newtype, but the derivations won't work.
07:19 gaal audreyt: any idea what to do with this? changing PureInt to a 'data' gives
07:19 gaal Can't make a derived instance of `(:<:) Integer PureInt' (`(:<:) Integer' is not a class)
07:20 gaal I don't understand why this wasn't a problem with a newtype.
07:22 shachaf joined perl6
07:22 xern joined perl6
07:23 xern joined perl6
07:26 traecer joined perl6
07:27 agentzh joined perl6
07:28 agentzh does the initialization process of "my" variables in a file scope happen at compile-time or run-time?
07:29 gaal runtime, in general, but presumably there can be constant folding in some cases.
07:30 agentzh gaal: so the initialization happens before CHECK blocks run?
07:30 agentzh sorry, s/before/after/
07:32 agentzh (i assume "yes".)
07:32 gaal my unauthoratative guess is that yes, modulo optimization.
07:32 agentzh gaal: should i test that behavior?
07:32 agentzh (in pugs test suit)
07:33 gaal sure, though I'm don't know if CHECK parses now
07:33 gaal or how you might write a test for this even if it did?
07:33 lambdabot joined perl6
07:33 gaal put an ok !defined inside a CHECK block?
07:34 agentzh gaal: surely not.
07:34 agentzh ;-)
07:34 agentzh i'm following the existing logic in t/statements/control_blocks.t
07:34 agentzh i'm refactoring that. currently it looks ugly.
07:35 agentzh (or terrible even)
07:35 agentzh pugs test suit needs much love.
07:35 gaal yes, tests for control structures tend to get that way...
07:36 gaal your love is much appreciated :)
07:36 agentzh :D
07:36 agentzh i'm working on that right now.
07:36 gaal agentzh++
07:37 agentzh anther question: my $handle = BEGIN { ... }; what's the type of $handle?
07:37 agentzh is ref($handle), 'BLOCK' ?
07:38 Psyche^ joined perl6
07:40 gaal no, it's the actual compile-time result of the block.
07:40 agentzh ?eval my $handle = BEGIN {3} say $handle.ref
07:40 evalbot_12062 Error:  unexpected "s" expecting comment, operator, ">>=><<", "\187=>\171", "=>", "=", ".=", "&&=", "**=", "+&=", "+<=", "+>=", "+^=", "+|=", "//=", "?^=", "?|=", "^^=", "xx=", "||=", "~&=", "~<=", "~>=", "~^=", "~|=", "%=", "&=", "*=", "+=", "-=", "/=", ":=", "Y=", "^=", "x=", "|=", "~=", "\165=", postfix conditional, postfix loop, postfix iteration, ";" or end of input
07:40 agentzh ?eval my $handle = BEGIN {3}; say $handle.ref
07:40 evalbot_12062 OUTPUT[Int ] Bool::True
07:40 gaal may not work in pugs now :)
07:40 agentzh gaal: see?
07:41 gaal but my $time_during_compilation = BEGIN { time } should (eventually) work.
07:41 agentzh it works as you said.
07:41 agentzh ?eval my $handle = BEGIN { time }; say $handle.ref
07:41 evalbot_12062 OUTPUT[Rat ] Bool::True
07:41 agentzh ?eval my $handle = BEGIN { time }; say $handle
07:41 evalbot_12062 OUTPUT[208510914.253901 ] Bool::True
07:42 gaal Rat?  that's interesting...
07:42 gaal ?eval my @a= BEGIN { time }; say @a
07:42 evalbot_12062 OUTPUT[208510942.691322 ] Bool::True
07:42 agentzh Rational?
07:42 gaal yes
07:42 luqui iirc, there is no float in pugs
07:42 luqui only rat
07:43 agentzh ah
07:43 luqui sounds morbid...
07:43 luqui floating rats, pugs...
07:43 * agentzh grins
07:43 agentzh bbiab &
07:43 agentzh left perl6
07:44 gaal what? of course there is. it's just a little hard to get to it
07:44 gaal anyway I didn't remmeber the underlying fact that time could be fractional from the haskell runcore, that's what threw me.
07:44 gaal but perl -le 'print scalar localtime(208510914)'
07:44 gaal makes sense.
07:49 plisk joined perl6
07:49 luqui gaal, how do you get a float?
07:49 gaal there's a VNum type in the internals
07:49 luqui from userland
07:50 gaal dunno
07:50 gaal "a little hard" may involve writing a prim :-p
07:51 gaal eventually though my Num $x = some_rat
07:52 gaal ?eval "1.2"+0
07:52 evalbot_12062 1.2
07:52 crem joined perl6
07:52 gaal ?eval ref("1.2"+0)
07:52 evalbot_12062 ::Num
07:52 luqui ah, there we go
07:52 luqui ?eval my $x = 42.6; $x.ref
07:52 evalbot_12062 ::Rat
07:52 luqui ?eval my $x = 42.6; (+~$x).ref
07:52 gaal that of course is a bad way to do it, though
07:52 evalbot_12062 ::Num
07:52 luqui it's the +~ operator
07:52 luqui of course
07:53 gaal "more handwaving" operator
07:53 luqui kind of looks like a burning plane to me
07:54 gaal dunk the rat in stringy water and back out to the number plane
07:54 luqui uhn, yeah
07:54 luqui it kinda sorta makes a teeny bit of sense though
07:54 Psyche^ is now known as StudiesInWords
07:55 luqui if you're entering a number directly in your program, it's going to be exact
07:55 luqui so it's stored as a rational
07:55 luqui but if you're reading it from a string, it has error
07:55 luqui so it's okay to store it floating point
07:55 gaal your story sounds like a "rationalization".
07:56 luqui ahh, the perl community
07:56 luqui always so serious
08:03 buetow joined perl6
08:06 gaal oh, haskell Integer doesn't encode infinity?
08:08 lambdabot joined perl6
08:13 lambdabot joined perl6
08:15 Aankhen`` joined perl6
08:18 luqui gaal, certainly not
08:19 gaal right. our PureInt does, though, and the only thing I can think to do when casting an Inf/NaN to Integer is an error.
08:20 luqui or define your own numeric class that does handle it
08:20 luqui but that is probably definitely a lot of work
08:28 ruoso joined perl6
08:36 shachaf joined perl6
08:52 shachaf joined perl6
08:53 kane-xs joined perl6
09:06 traecer left perl6
09:08 jferrero joined perl6
09:23 shachaf__ joined perl6
09:42 chris2 joined perl6
10:21 tup joined perl6
10:29 lichtkind joined perl6
10:46 jferrero joined perl6
11:00 agentzh joined perl6
11:00 agentzh ?eval say INIT { 3 };
11:00 evalbot_12062 OUTPUT[3 ] Bool::True
11:00 agentzh woot!
11:00 agentzh pugs++
11:02 agentzh multiple END blocks run in opposite order, just as Perl 5?
11:03 audreyt sure
11:03 agentzh audreyt: thx
11:03 audreyt luqui: here's a generalization you may like
11:03 audreyt TimToady: sanity check?
11:05 pasteling "audreyt" at 220.135.90.73 pasted "sane treatment of "want"" (57 lines, 2.6K) at http://sial.org/pbot/18880
11:07 audreyt (the corresponding Smartmatch table in S04 will also be updated so SigA~~SigB is testing that SigA is subset of SigB (i.e. compatible and at least as specific as ))
11:08 audreyt gaal: GHC allows newtype to derive any instance its base type has
11:08 audreyt "data" however has no such luxury
11:08 audreyt the former works because newtype is erased
11:09 audreyt the latter doen't work because each variant may have different instances
11:13 bcorn_ joined perl6
11:17 shachaf joined perl6
11:22 agentzh audreyt: END {} in Test.pm never executes on my machine. :(
11:23 audreyt indeed
11:23 audreyt fixing
11:23 agentzh audreyt: so it's a pain to adjust the test plan thingy.
11:23 agentzh yay!
11:36 wolverian audreyt, hm, the signature tests are pretty ugly. maybe that's a good case for return type MMD anyway.
11:37 audreyt how would rettyp MMD hep heere?
11:37 audreyt help here
11:39 wolverian I thought it's pretty much the same thing as want.
11:40 luqui audreyt, that is pretty sexy
11:41 wolverian (btw, I meant visually ugly, not semantically.)
11:42 plisk joined perl6
11:42 bpphillips joined perl6
11:42 audreyt wolverian: uh, no
11:42 audreyt want is dynamic
11:43 audreyt in that you can say want.arity < 5
11:43 audreyt which is... I think kinda hard to express with mmd
11:43 audreyt want.arity % 2
11:43 audreyt even
11:44 wolverian er, true.
11:44 wolverian --> :(@) where { .arity % 2 }
11:45 audreyt currently not a valid syntax
11:45 audreyt I wouldn't mind adding generic guards...
11:45 audreyt but seems silly :)
11:45 audreyt I mean, the %2 use case seems silly
11:46 audreyt I agree that rettyp MMD in general can help.
11:46 wolverian yup, but if we want to push MMD over want (why would we? hm. I just like it)
11:46 audreyt *nod*
11:46 wolverian I have no idea how opportunistic you'd have to be with guards on return types .. it sounds like a hard problem
11:47 audreyt combinational even
11:47 gaal audreyt: I added instances myself...
11:47 audreyt "I can't tell your what to give you until you tell me what you'll give back in return etc
11:47 wolverian right
11:47 audreyt that can result in a tie.
11:47 wolverian any papers on this?
11:47 audreyt but currently I think the spec's spirit is the incmoing side mmd takes precedence
11:48 audreyt and returning side is only tiebreaking, if ever
11:48 wolverian @mmd_choices.pick
11:48 lambdabot Unknown command, try @list
11:49 agentzh heh, svnbot is down.
11:49 wolverian audreyt, that sounds like the only solution, besides making the user annotate things explicitly.
11:49 wolverian (thus making it effectively smd)
11:51 gaal audreyt: I'm adding toVV :: n -> Eval Val
11:51 gaal on e.g. toVV (VBool v) = Val $ VV $ val $ ((cast v) :: PureBit)
11:51 gaal I get:
11:52 gaal Couldn't match `Bool' against `Val'
11:52 gaal but it seems to be on the whole expression
11:52 gaal how can that be?
11:52 audreyt you don't need a Val contruscotr.
11:52 audreyt constructor.
11:52 gaal er, right
11:53 gaal but even without it I get the error
11:53 gaal whcih seems to be on the complete expression!
11:53 audreyt you need a "return".
11:53 gaal agh, of course
11:54 gaal but no, still same error! :)
11:54 audreyt wow. hm.
11:54 audreyt remove the cast?
11:54 audreyt or is PureBit now a newtype?
11:54 gaal val v?
11:54 audreyt (cast v)
11:55 audreyt also, how can you get a n->Eval Val?
11:55 audreyt toVV's sig is Val->Val
11:55 gaal ahhhhhhhh darn
11:55 audreyt Val->EvalVal
11:55 gaal type PureBit        = Bool
11:55 gaal didn't change it yet. doh
11:55 gaal :)
11:55 audreyt but that's not it
11:55 audreyt the problem is the sig of the func
11:55 audreyt Val -> Eval Val
11:55 audreyt not n->
11:55 gaal can't be not n->  -- it's a method!
11:56 gaal (no?)
11:56 audreyt it's a method of what?
11:56 gaal Value?
11:56 audreyt then you want
11:56 gaal old Value that is
11:56 audreyt toVV v = ...
11:57 audreyt not
11:57 audreyt toVV (VBool v) ...
11:57 audreyt because it's a Bool not a Val
11:57 gaal well I'm in the VBool instance
11:57 audreyt the compiler is telling you... exactly that
11:57 audreyt :)
11:57 gaal I don't understand
11:58 audreyt the argument to toVV
11:58 gaal I ave an oldVal
11:58 audreyt should it be of type "n" ?
11:58 gaal yes, in this case a VBool
11:58 gaal oh
11:58 audreyt is "n" instantiated to "VBool" in the instance?
11:58 gaal darn.
11:58 audreyt a VBool doesn't have a constructor...
11:58 audreyt it's a pundamental error
11:59 gaal puntastic
12:05 agentzh audreyt: do you have some cycles to make LAST/LEAVE/ENTER/NEXT blocks parse? (or even make them work)
12:05 audreyt agentzh: you can make them parse
12:06 audreyt line 931ish in src/Pugs/Parser.hs I think
12:06 audreyt parse for them and then return emptyExp for now
12:06 agentzh audreyt: i'll try. ;-)
12:06 agentzh although i'm still in fear of Haskell.
12:07 * agentzh is looking forward to the Perl 6 grammar ==> Haskell Parsec rules converter.
12:08 Limbic_Region joined perl6
12:13 agentzh audreyt: does q/"LEAVE" -> return emptyExp/ look sane?
12:13 audreyt sure
12:13 audreyt if it compiles ship it etc
12:13 * agentzh feels proud.
12:14 agentzh audreyt: ok
12:15 gaal The Haskellasso swings true! --more--
12:15 wolverian heh
12:16 agentzh emptyExp++
12:18 audreyt agentzh++
12:18 agentzh :=)
12:18 * audreyt summons svnbot
12:18 gaal (++)++
12:20 audreyt ok, the END problem is solved
12:20 audreyt probably need to rm blib6/lib/Test.pm.yml
12:21 agentzh woot! audreyt++
12:35 gaal yay:
12:35 gaal pugs> vv (Inf)
12:35 gaal VPure (MkNum Infinity)
12:35 audreyt yay!
12:35 audreyt viva!
12:37 audreyt agentzh: does the END work for you?
12:37 audreyt (r12071)
12:37 agentzh audreyt: checking...
12:38 Limbic_Region anyone know why setting the heap size in config.yml has no affect on Pugs?
12:38 gaal Limbic_Region: rerun perl Makefile.PL
12:38 Limbic_Region gaal - I do everytime I do an svn up
12:38 Limbic_Region it has no affect
12:38 Limbic_Region perlbot nopaste
12:38 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
12:39 agentzh audreyt: yes, it works!
12:39 pasteling "Limbic_Region" at 129.33.119.12 pasted "config.yml heap not having any affect" (43 lines, 1.5K) at http://sial.org/pbot/18881
12:39 audreyt moose!
12:39 agentzh audreyt: but the summary outputs go after the table generated by ``prove'', which is unnatural.
12:39 Limbic_Region there was another user the other day with the same problem
12:40 * Limbic_Region checks the irc logs
12:40 audreyt agentzh: huh?
12:40 lumi gaal: How'd you solve the funky instance errors we had?
12:40 audreyt did you have a plan?
12:40 agentzh Limbic_Region: rerun "nmake"
12:40 gaal lumi: you mean missing derivations? added explicit ones.
12:40 agentzh Limbic_Region: i'm also getting the heap error on Win32
12:40 gaal which are currently pretty empty but we'll add as we go along.
12:41 lumi The ones we had at the cat-athon
12:41 agentzh audreyt: a sec...
12:41 Limbic_Region yep - cjeris
12:41 gaal lumi: oh wait you're talking about the PLit circularity?
12:41 audreyt I think agentzh has a pretty good computer :)
12:41 Limbic_Region agentzh - that is not a fix
12:41 agentzh i'll paste it.
12:41 Limbic_Region that just gets it past the problem
12:41 lumi gaal: Yeah
12:41 agentzh Limbic_Region: sure. but it works.
12:41 gaal lumi: audreyt++ just deleted one of the instance declarations somewhere and the problem Went Away
12:41 gaal where
12:41 gaal s svnbot?
12:41 lumi Heh, magic
12:41 Limbic_Region agentzh - you are missing the point - I know the workaround
12:41 Limbic_Region I am trying to solve the problem
12:42 Limbic_Region so I am having the problem, agentzh is having the problem, and cjeris is having the problem
12:42 Limbic_Region commonality - Win32
12:42 agentzh Limbic_Region: okay.
12:42 audreyt svnbot is wanting for recompile pugs on feather
12:42 audreyt s/wanting/waiting/
12:42 Limbic_Region or rather, I am trying to prod someone who knows what's going on to solve the problem
12:43 audreyt I don't know much about the build flag
12:43 audreyt but we are ripping AST.Internals to pieces
12:43 audreyt and once we're done win32 should have enough heap :)
12:43 gaal haya!
12:43 gaal grr this commit is taking forever
12:45 gaal cat-athon, huh. more like steamed-lumithon
12:45 lumi That too
12:46 lumi I can't stand cats!
12:46 lumi Well, I can't stand near cats, I guess
12:46 lumi I'm actually quite fond of them. Mh.
12:46 Limbic_Region audreyt - that's cheating
12:46 Limbic_Region while it would make me happy not to have to run nmake twice for a compile
12:47 Limbic_Region any idea why config.yml's heap settings have no affect on Win32?
12:47 gaal working around a minor bug by fixing a major internals problem? Limbic_Region, you're saying no to a good bargain here :)
12:48 audreyt Limbic_Region: what did you set it to?
12:48 audreyt 384m is default for win32
12:48 lumi Would adding any(<LAST LEAVE ENTER NEXT>) be very tricky?
12:48 audreyt Limbic_Region: in fact, add line 197
12:48 audreyt I mean, comment out hte block in line 197 Makefile.PL
12:49 audreyt and do _not_ set heap size for win32
12:49 audreyt and see if it actually finishes compilation
12:49 audreyt lumi: it means extending VCode slots
12:50 audreyt which... partly overlaps with the Pugs.Val refactoring
12:50 audreyt so maybe you can write a PureCode
12:50 audreyt carry VCode definition over for now, or something
12:50 audreyt but if you extend VCode in src/Pugs/AST/Internals it shoudl also work
12:50 audreyt see the new slots gaal added in CapInternals
12:51 audreyt (bbiab)
12:58 Limbic_Region audreyt - 400m
12:58 Limbic_Region gaal - no, I am not
12:58 Limbic_Region just interested in why things seem to only affect Win32
12:58 bcorn joined perl6
12:59 Limbic_Region ok, so I am to comment the line out in config.yml
12:59 Limbic_Region and I am to comment out line 197 in Makefile.PL
12:59 Limbic_Region and then to try a rebuild
12:59 Limbic_Region got it
13:02 agentzh audreyt: it was my fault. now Test.pm's END {} works perfectly here. :=)
13:03 agentzh sleeptime &
13:03 agentzh left perl6
13:07 cjeris joined perl6
13:10 gaal should I write a ((:<:) PureInt PureNum) instance? or should PureInt's asNum fo the work?
13:11 gaal oh, what a pity that an instance like that has to be in Pugs.Val because of circulatiry...
13:11 daxim joined perl6
13:12 Limbic_Region oh, and while I am complaining - nmake realclean doesn't finish properly "Can't find string terminator "," anywhere before EOF at -e line 1.", NMAKE : fatal error U1077: 'C:\Perl\bin\perl.exe' : return code '0xff'
13:12 lollan joined perl6
13:13 gaal or is it incorrect to have that instance because with limited precision, Double is not Liskov-subsitutable for Integer?
13:14 Limbic_Region audreyt - trying your suggestion now
13:14 Limbic_Region & # $work
13:18 audreyt Limbic_Region: that's easy. realclean fixed
13:18 audreyt gaal: incorrect.
13:20 gaal k, writing out asNum
13:22 lumi How would I get the higher block to hang the ENTER etc on it?
13:23 svnbot6 joined perl6
13:24 audreyt you what? :)
13:25 renormalist joined perl6
13:26 audreyt the key here is Parser.ruleBlockBody
13:26 fglock joined perl6
13:26 audreyt you want to somehow inspect the ENTER etc when
13:26 audreyt (Syn "block") is  emitted
13:27 audreyt from parser
13:27 audreyt and make it part of Syn
13:27 audreyt Syn "block [body, enterBlock]
13:27 audreyt maybe. not sure
13:27 audreyt you can hang the so-far-seen ENTER stuff in several places
13:28 audreyt one possibilty it to declare it as a "state"
13:28 audreyt in the body
13:28 audreyt so
13:28 audreyt ENTER { ... }
13:28 audreyt is translated to
13:28 audreyt state &ENTER := {...}
13:29 audreyt another thought is to push it to ruleEnvBody (see localEnv's definition)
13:29 gaal lumi: look at how FIRST does that (I think it does, at least)
13:29 audreyt another option is to simply emit a specil Syn""
13:29 audreyt and then have retBlock collect that
13:29 audreyt not sure which way is sanest...
13:29 audreyt improvise :)
13:29 spoop joined perl6
13:32 Limbic_Region audreyt - not sure what you mean by realclean fixed - easy?
13:39 svnbot6 r12074 | gaal++ | * cercion of PureInt to PureNum. `1`+`1` triggers a cast in +; the
13:39 svnbot6 r12074 | gaal++ |   promotion is implemented in (instance ICoercible P PureInt).asNum
13:40 vel joined perl6
13:42 gaal Limbic_Region: I think she meant r12073.
13:42 Limbic_Region I still don't understand
13:42 Limbic_Region did she make the changes to the Makefile.PL that she was suggesting I try knowing they will work
13:42 Limbic_Region ?
13:42 * Limbic_Region checks the change log history
13:42 Limbic_Region err - the check-in history
13:44 gaal I believe she meant she believed she had fixed them. Try it out?
13:44 Limbic_Region oh, the realclean problem not the heap problem - gotcha
13:44 * Limbic_Region apparently doesn't have his multi-threading plug-in enabled this morning
13:47 * gaal wonders if svnbot can be persuaded to report the commits it had missed
13:48 renormalist Some Moose people here? I asked sth. in #moose, if someone of you may have a look there ...
13:49 svnbot6 r12075 | audreyt++ | * Pugs.Val.Int: there's no need to define two empty instances... at least for GHC 6.5 here.
13:49 * Limbic_Region attempts to verify the realclean fix before moving on to the heap potential fix
13:49 audreyt renormalist: the mastermoose hath replied
13:49 Limbic_Region audreyt - realclean still b0rk
13:50 audreyt what's the errmsg?
13:51 pasteling "Limbic_Region" at 129.33.119.12 pasted "nmake realclean failure on Win32" (19 lines, 2K) at http://sial.org/pbot/18884
13:51 Limbic_Region attempting the heap suggestion now
13:52 Limbic_Region will be AFK for some time after the nmake starts so I might not be able to report on success/failure for 2 hours
13:52 audreyt Limbic_Region: try again :)
13:53 audreyt up + Makefile.PL + nmake clean
13:53 audreyt I mean realclean
13:54 Limbic_Region audreyt - already in the middle of an nmake cycle - but for you, anything
13:54 svnbot6 r12076 | audreyt++ | * try another realclean fix...
13:54 audreyt thanks :)
13:55 Limbic_Region the local changes I made to the Makefile.PL won't have any affect on getting your changes will they?
13:55 audreyt if that still fails I have another variation...
13:55 audreyt they won't
13:55 gaal audreyt: r12075 works in 6.4.x too
13:56 Limbic_Region ok, well I have 5 minutes before I need to leave for a $work meeting so let's hope we get it in time
13:56 Limbic_Region audreyt - still bombs
13:56 Limbic_Region I think with the same error as last time
13:57 Limbic_Region yep
13:57 audreyt "Can't find string terminator "." anywhere before EOF at -e line 1."
13:57 audreyt ?
13:58 Limbic_Region Can't find string terminator " " anywhere before EOF at -e line 1.
13:58 Limbic_Region heh
13:58 Limbic_Region this client eats plus symbols
13:58 Limbic_Region it isn't a . that's missing
13:58 Limbic_Region it is a plus symbol
13:59 audreyt try the laast time.
13:59 svnbot6 r12077 | audreyt++ | * ok, final, guaranteed to work, fix for realclean.
13:59 audreyt we have 60 seconds per my wallclock... :)
13:59 gaal echo "ok try a clean checkout after this please" ; echo "y" | format c:
14:00 audreyt -bash: format: command not found
14:00 gaal echo '' > /dev/{h,s}da
14:01 gaal but Limbic_Region is on win32 :)
14:01 Limbic_Region actually, I am already 1 minute late
14:01 Limbic_Region but audreyt gets special treatment
14:01 audreyt -bash: /dev/{h,s}da: ambiguous redirect
14:01 Limbic_Region of course, I am not overly fond of her most recent perlmonks pic
14:02 audreyt you think it's unflattering? :)
14:02 gaal what, your shell doesn't have autothreading?
14:02 Limbic_Region 1 - she isn't smiling or being coy, 2 - the bright white is distracting
14:02 Limbic_Region attempting realclean
14:03 jjkoch joined perl6
14:03 audreyt you want coy? you get a coy one :)
14:03 Limbic_Region ;-)
14:04 gaal this is going to have 12 syllables in it isn't it?
14:04 Limbic_Region ooh, I just noticed something
14:04 Limbic_Region audreyt plus plus for fixing realclean
14:04 Limbic_Region but actually, it was probably my fault
14:05 Limbic_Region somehow my nmake.exe version 7.10.3077 which started the realclean process
14:05 Limbic_Region was mysteriously changed to the default nmake 1.5 sucky crap that ships with winblows
14:05 Limbic_Region so those changes were probably not necessary - but they worked
14:05 Limbic_Region thanks - /me wanders off
14:05 audreyt coy image uploaded ;)
14:06 audreyt enjoy $job, Limbic_Region  :)
14:06 Limbic_Region better picture - quality not so good
14:06 audreyt had to reduce jpeg quality to satisfy 82910
14:06 audreyt 81920
14:06 Limbic_Region oh, well that's not so much adhered too but probably best to play by the rules
14:07 Limbic_Region still not too fond of the white circle but *shrug* - I am just one man
14:07 * Limbic_Region & # $work
14:08 gaal the ICoercible<->hs-boot mystery remains unsolved in ghc-users...
14:10 gaal ?eval if `1` { "bit coercion is correct" }
14:10 evalbot_12062 is now known as evalbot_12074
14:10 evalbot_12074 "bit coercion is correct"
14:11 gaal ?eval if !`1` { "" }
14:11 evalbot_12074 undef
14:11 gaal ?eval if !`` { "bit coercion is correct" }
14:11 evalbot_12074 "bit coercion is correct"
14:11 gaal oh! the pugs shell is wrong
14:12 gaal the first eval there gives 0.0
14:12 audreyt pugs> !``
14:12 audreyt Bool::True
14:12 rodi joined perl6
14:12 gaal yes, that's correct
14:12 gaal the problem is not related to VV
14:12 audreyt it displays $_
14:12 audreyt stmts doesn't set $_ apparently
14:12 gaal in the pugs shell, if 1 {1} yields
14:12 gaal oh.
14:12 audreyt reduceSyn doesn't have retval
14:12 gaal is that by design?
14:13 gaal uh, that means a bug - last-evalled-thingie-in-block etc.
14:13 audreyt uh no
14:13 gaal hmm no indeed.
14:14 gaal how come?
14:14 audreyt ?eval do if 1 { 3 }
14:14 evalbot_12074 3
14:14 gaal this does work correctly:
14:14 gaal ?eval sub f { if 1 { 42} } f
14:14 evalbot_12074 42
14:14 gaal so it's just an assign-to-$_ pugsshell thing?
14:15 audreyt aye
14:16 hexmode joined perl6
14:16 audreyt runImperatively is somehow borke
14:16 gaal bourque
14:17 * gaal doesn't like the new vim7 tab mode
14:17 gaal I don't like that it keeps buffers open
14:17 audreyt I still use minitabexpl
14:17 gaal and I don't like not having ^6
14:18 gaal I think I'll go back to it
14:18 gaal wanted to give the new builtin stuff a try
14:18 gaal I actually started hacking putty to get it to pass along c-pgup events to vim...
14:19 jferrero joined perl6
14:20 bpphillips audreyt: minitabexpl?
14:20 gaal @google minibufexpl.vim
14:20 lambdabot http://vim.sourceforge.net/scripts/script.php?script_id=159
14:20 lambdabot Title: minibufexpl.vim - Elegant buffer explorer - takes very little screen space : vim ...
14:21 bpphillips gaal: thanks
14:21 gaal if you prefer the tabs to be at the bottom of the screen I think kolibrie figured out how to get them there
14:22 gaal bpphillips: exec usage summary: :e as many files as you like, :bn and :bp to move around, or :3b to move to buffer 3
14:22 gaal also you can ^w Up, pick a buffer, press ENTER.
14:24 ruoso joined perl6
14:24 gaal audreyt: what was the fate of Bool? does it still exist?
14:28 audreyt subset Bool of Bit;
14:28 audreyt can we get that maybe?
14:28 audreyt not sure...
14:29 DaGo joined perl6
14:39 gaal ha! newVal design bug: Sig is in P, but has a Param, which has a [Class] field
14:40 gaal Param.p_types should probably move over to class's ids, right?
14:40 audreyt aye, I'm thinking about a Type abstraction to mean specifically "class's id"
14:41 gaal isn't classId = ObjId?
14:41 audreyt yes bu
14:41 audreyt yes but
14:41 audreyt parametricity.
14:41 gaal its metaclass skid
14:42 gaal I don't see the connection?
14:42 gaal brb
14:42 audreyt :(Array of Code:(Int --> Int))
14:43 audreyt :(Array of Code:(Int --> ::t))
14:43 audreyt the latter does not have a SKID
14:43 audreyt for I hope obvious reasons
14:43 gaal oh. hmmm.
14:44 gaal well, it didn't have a class either :)
14:44 audreyt as soon as we allow tyvar we are in some other land
14:44 audreyt right.
14:44 audreyt so Type
14:44 audreyt is the correct abstractino
14:44 gaal is that a tree?
14:44 * audreyt throws a lambda cube
14:44 * gaal dodges
14:45 weinig|sleep is now known as weinig
14:45 gaal I think I'll type 'type Type = ()' for now and see how it becomes transmogrified with time :)
14:45 audreyt er no
14:46 gaal we really have to solve the circularity problem soon, the Ps want to cross-polinate
14:46 audreyt at least we need to cover the old type
14:47 audreyt that is, sum and union types
14:47 audreyt so retire [Class]
14:47 audreyt change it to Type
14:47 audreyt and carry over the old Type
14:47 gaal k
14:47 audreyt data Type = MkType !Buf         -- ^ A regular type | TypeOr  !Type !Type -- ^ The disjunction (|) of two types | TypeAnd !Type !Type -- ^ The conjunction (&) of two types deriving (Eq, Ord, Typeable)
14:47 audreyt you can simply import Pugs.Typs
14:47 audreyt and use that.
14:47 iblechbot joined perl6
14:48 gaal k
14:48 svnbot6 r12078 | fglock++ | PCR - fixed token { a:b } - ignores the colon
14:49 jmf ?eval my $a = 1,2,3; my @b = 1..3; say $a; say $b
14:49 evalbot_12074 is now known as evalbot_12077
14:49 evalbot_12077 OUTPUT[1 ] Error: Undeclared variable: "$b"
14:49 jmf ?eval my $a = 1,2,3; my @b = 1..3; say $a; say @b
14:49 evalbot_12077 OUTPUT[1 123 ] Bool::True
14:49 jmf what is the difference between $a and @b in that case?
14:50 jmf ?eval my $a = 1,2,3; my @b = 1,2,3; say $a @b
14:50 evalbot_12077 Error:  unexpected "@" expecting comment, operator, ":", ",", postfix conditional, postfix loop, postfix iteration, ";" or end of input
14:51 rodi ?eval my $a = 1,2,3; say $a
14:51 evalbot_12077 OUTPUT[1 ] Bool::True
14:51 audreyt =item * The list assignment operator now parses on the right likeany other list operator, so you don't need parens on the right side of:
14:51 audreyt    @foo = 1,2,3;
14:51 audreyt the operator spec (S03)
14:51 audreyt line 124
14:51 kanru joined perl6
14:52 jmf audreyt: what is the difference between using different sigils though?
14:52 audreyt the @ sigil confers list context
14:52 audreyt and cause the right land side to be parsed as a listop
14:53 audreyt the $ sigil on the other hand only takes one term from the right hand side.
14:53 audreyt as it did in perl5
14:53 audreyt $ perl -le 'my @x = 1,2,3; print @x'
14:53 audreyt 1
14:53 jmf ?eval my $a = 1,2,3
14:53 tup joined perl6
14:53 evalbot_12077 is now known as evalbot_12078
14:53 evalbot_12078 (\1, 2, 3)
14:53 audreyt $ ./pugs -e 'my @x = 1,2,3; say @x'
14:53 audreyt 123
14:54 gaal aw, fiddlesticks. Sig needs Code...
14:54 gaal and Exp!
14:54 audreyt ok. I get the memo. will look at circularity
14:56 gaal its wanting Exp is tricky... can it be oldExp for now?
14:57 gaal if so it's also circular towards outside
14:57 gaal like an infinity
14:57 audreyt how so?
14:57 gaal ah no, happily we're consuming Internals
14:57 gaal glad to be wrong there
14:57 audreyt that internals is not he internals you are looking at
14:58 gaal it's Pugs.Internals, I know
14:58 gaal but I can import oldExp too, temporarily
14:58 hacka joined perl6
14:58 hacka i kno more about computas than u all im da best hacker eva
14:59 audreyt hacka: would you like a commit bit?
14:59 merlyn oh yes, the troll. :)
14:59 merlyn going down the list of channels alphabetically, it appears.
14:59 hacka lol..
14:59 hacka nah just @ random
14:59 merlyn already sighted in #oracle and #perl
15:00 merlyn and cited as well. :)
15:00 cjeris and #nethack, how's that for misguided?
15:00 mauke hahahaha
15:00 merlyn but not sited
15:00 hacka yawn
15:00 hacka yall n00bs tho :D
15:00 merlyn "I'm the best potion quaffer EVAR"
15:00 audreyt merlyn++
15:00 rodi LOL
15:00 merlyn "I can *run* with my little doggy!"
15:01 hacka left perl6
15:01 merlyn "my sword always glows BLUE!"
15:01 gaal no really, we should have shown him leet.p6
15:01 gaal *l33t
15:02 audreyt pass the yellow mold around...
15:02 gaal I think it bitrotted and it could have used his help
15:03 TimToady hi
15:04 audreyt hi TimToady :)
15:04 gaal hi TimToady
15:05 BooK joined perl6
15:06 audreyt 23 === SKID(OO)
15:06 audreyt TimToady: http://sial.org/pbot/18880 :)
15:06 lambdabot Title: Paste #18880 from "audreyt" at 220.135.90.73
15:09 gaal audreyt: if want ~~ :($ is rw), it should also be ~~ :($) right?
15:09 audreyt not sure. in functions we always have :($ is readonly)
15:10 audreyt but as it's standalone here, yeah, I guess you aaare right
15:10 audreyt there was a brief period where ~~ :(Item) could mean ByVal
15:11 audreyt but currently it needs to be written ~~ :($ is ro) /
15:11 gaal if I write code that only cares if it's in some kind of scalar context, it oughta be able to do one smartmatch only
15:11 audreyt :($) is good enough then
15:12 audreyt unless your sub is decl as rw
15:13 audreyt which is rarer
15:13 gaal remoose me, what does that mean?
15:13 audreyt it means return($x)
15:14 audreyt returns VAR($x)
15:14 audreyt not "scalar $x"
15:14 audreyt it's shorthand for
15:15 audreyt "o f $ is rw)"
15:15 audreyt "sub f of ($ is rw)"
15:17 gaal OK
15:17 gaal thanks
15:18 TimToady audreyt: looks like a big improvement to me, whether or not it's perfect.
15:18 audreyt :D
15:18 audreyt sane to commit then?
15:18 TimToady I much prefer consistent sigs over pseudotypes.
15:18 TimToady sure, go ahead
15:19 TimToady It's not like we won't change it 18 ways from Tuesday anyway.
15:19 audreyt yeah
15:19 TimToady and you can always ask for forgiveness later.  :)
15:19 audreyt yay :)
15:20 TimToady "improvise", to quote one of my girl friends.  :)
15:20 * audreyt giggles
15:21 StudiesInWords "It's easier to get forgiveness than permission."
15:23 PolettiX joined perl6
15:23 jferrero joined perl6
15:24 audreyt I wonder if call/cc in perl6 is spelled &return.clone...
15:26 audreyt that's quite easier to explain tha n&?CALLER_CONTINUATION
15:26 TimToady luke was wondering about that earlier, or something like it.
15:27 TimToady <luqui> sub callcc(*&code) { code(&return) }
15:28 audreyt well
15:28 audreyt spec says &return cannot be used outside that sub
15:28 audreyt hence .clone
15:30 audreyt (S04 If you pass a closure
15:30 audreyt object outside of its official "sub" scope, it is illegal to
15:30 audreyt return from it.)
15:30 TimToady you're not using it outside the sub, you're just, er, using it.
15:30 tup joined perl6
15:31 audreyt ok..
15:31 TimToady but with &return you return before you call it.
15:31 TimToady timetravel++
15:31 TimToady ++traveltime
15:31 audreyt the problem with lexical &return is that closures, if they do close on it
15:32 audreyt will violate S04 and cause massive heap duplication
15:32 TimToady cool
15:32 TimToady it's just a SMOP
15:32 TimToady improvise
15:32 audreyt well, closures don't close on it, is the easiest way out ;)
15:32 audreyt as S04 said
15:33 TimToady well, time travel is always paradoxical.
15:33 audreyt my $closure;sub f { $closure = { &return() } };
15:33 TimToady unless you clone the whole universe
15:33 StudiesInWords p6bible++
15:33 audreyt $closure(); # fatal error; the closed-over &return has invalid ccontext
15:33 TimToady but that's just cloning the IO monad, right?
15:34 audreyt right...
15:34 audreyt all "unsafePerformIO" does is just make a new RealWorld for you
15:34 audreyt as good as the current one
15:34 audreyt neither is more Real
15:34 TimToady well, I'm not really awake enough to think about this yet--I'm just shooting my mouth off.
15:34 weinig joined perl6
15:35 audreyt I noticed :) it's cute, though.
15:35 TimToady and She Who Must Be Obeyed says we're going for a walk now before it gets blazing hot.
15:35 gaal Garden of unsafePerformIO paths
15:35 audreyt have fun, then :)
15:35 * audreyt goes committing "want" changes
15:35 gaal TimToady: if you see a Borges on the road, do not follow him
15:36 TimToady if I return before I left, lemme know.
15:36 audreyt do, and do not. try is not there!
15:36 TimToady walking &
15:36 TimToady "There once was a girl named Flight"
15:36 audreyt mm the sigil of return continuation
15:36 jjkoch left perl6
15:37 audreyt "Brite" I think.
15:37 audreyt or rather, google thinks. maybe she renamed
15:39 rodi Installing v6 to work with bleeding-edge pugs, should I just install 0.011 from CPAN, or should I install from my svn checkout, and if the latter, is the README in perl5/README out-of-date?
15:40 audreyt it's out of date.
15:42 rodi okay, should everything in that directory be installed? (I'm happy to edit the README)
15:42 rodi I know I need Pugs-Compiler-*...
15:42 gaal There once was a LISP generation
15:42 gaal Who liked nothing quite like continuation
15:42 gaal Every call they CCed
15:43 gaal Was resumed with a yield
15:43 gaal This led to efficient evaluation
15:43 PolettiX where can I find more about the disappearance of many "default behaviours", like I've found for "shift"?
15:44 gaal lumi will no doubt show up soon and tell me the scansions off. Well, commits welcome :)
15:47 audreyt PolettiX: I don't think it's documented that well
15:48 audreyt PolettiX: add an entry to docs/Perl6/Perl5/Differences.pod ?
15:48 audreyt (do you have a commit bit? if not, what's your email addr so I can send you one?)
15:48 PolettiX audreyt: flavio [AT] polettix.it  (froh-doh, but at work)
15:48 gaal PolettiX: the porting_howto is a starting point
15:49 PolettiX gaal: I'll google it out, thanks!
15:49 gaal look in docs/
15:52 PolettiX gaal: I fear that there's nothing about shift and nothing about default :D
15:52 audreyt I've already sent one, PolettiX
15:52 gaal bbiab&
15:54 PolettiX audreyt: do you mean that you sent me one in the past few days?
15:54 audreyt yeah
15:56 elmex joined perl6
15:57 PolettiX uhm, I'm afraid that I either missed it in the sea of junk email I receive
15:57 PolettiX or I simply didn't receive it
15:57 PolettiX audreyt: would you be so kind as to send me it again, please?
15:57 audreyt do you have some other mail account? :)
15:58 PolettiX eh, this one should be alive and kicking, but you can send it to flavio.poletti [at] stsconsulting.it
15:59 audreyt sent
16:01 PolettiX audreyt: I'm trying the registration link with my original email account :)
16:02 Limbic_Region hey audreyt - just got back
16:02 Psyche^ joined perl6
16:02 Limbic_Region commenting out the heap in config.yml and the block starting at 197 in Makefile.PL does not fix the heap problem on Win32
16:02 Limbic_Region didn't make it worse either
16:03 audreyt ok. can you trace Makefile.PL
16:03 audreyt make sure that it did read the heap size conifg?
16:06 fglock rodi: v6 0.013 in CPAN is just a few commits behind svn
16:08 rodi fglock: thanks.  my CPAN mirrors must be sucky, because even after 'reload index' I'm still getting 0.011 as the most recent.  I'll poke around and find a mirror with better updates, though- who knows what I might be missing!! ;)
16:08 Limbic_Region audreyt - sure, I will sprinkle lots of print statements
16:08 Limbic_Region will take me a while though as I must eat very soon
16:09 kolibrie gaal: bpphillips: minibufexpl tabs at bottom => let g:miniBufExplSplitBelow=1
16:10 rodi fglock: yup, that did it.  ibiblio.org was just a bit behind, I guess.  Thanks for the help.
16:10 Psyche^ is now known as StudiesInWords
16:12 StudiesInWords is now known as Patterner
16:17 soisoisoi joined perl6
16:19 svnbot6 r12079 | audreyt++ | * build profiling third-party libraries on "make profiled".
16:23 Limbic_Region is anyone else noticing "missing files from your kit - please inform the author" for inc/Module/Install ?
16:26 audreyt nopaste?
16:27 c6rbon joined perl6
16:27 Limbic_Region just a sec - was sprinkling print statements
16:28 Limbic_Region perlbot nopaste
16:28 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
16:29 pasteling "Limbic_Region" at 129.33.119.12 pasted "Missing files from inc/Module/Install ???" (41 lines, 2.1K) at http://sial.org/pbot/18887
16:30 Limbic_Region audreyt - that's the M::I problem but the heap trace is interesting - will let you know results in a few
16:31 audreyt Limbic_Region: the warning is ignorable
16:31 audreyt we should turn it off somehow
16:31 audreyt but it's ignorable
16:32 Limbic_Region k
16:32 Limbic_Region ok - here is the interesting thing with heap
16:33 Limbic_Region both the block starting at line 197 and the one pulling from the config work
16:33 Limbic_Region IOW - $heap is set to 348m or in my config.yml 400m
16:33 Limbic_Region it just appears to have no affect
16:35 Limbic_Region here are the ghc flags "ghc_flags = -H0  -i. -isrc -isrc/pcre -I. -Isrc -Isrc/pcre -static  -Wall  -fno-warn-name-shadowing   RTS -M400m -RTS"
16:35 Limbic_Region after setting $heap
16:36 audreyt try 1024m
16:36 TimToady & kfa
16:36 audreyt wb :) I committed two unrelate cleanups, both discussed here a few days ago
16:36 Limbic_Region audreyt - um, ok but the heap size is not changing - it is still failing with a specific amount
16:37 Limbic_Region GHC's heap exhausted: current limit is 268435456 bytes;
16:37 Limbic_Region it is always that number regardless of what we set the -M to
16:41 audreyt hm
16:41 audreyt I know that number
16:41 audreyt it's 2** something
16:42 audreyt ?eval log(268435456) / log(2)
16:42 evalbot_12078 is now known as evalbot_12079
16:42 evalbot_12079 28.0
16:42 rodi I never cease to be amazed.
16:42 Limbic_Region audreyt - isn't the default for -M unlimited anyway?
16:43 Limbic_Region or at least isn't it supposed to be
16:44 audreyt I think "268435456" means unlimited on 32bit machines
16:45 audreyt since heap objects aligns on 4bit boundaries, that makes 29 effective bits
16:45 audreyt and maybe GHC hijacked one bit for nefarious purposes
16:45 audreyt so that makes sense
16:45 audreyt upgrade to a 64bit machine?
16:46 TimToady ?eval my %x = :a(1), :b(2); my $what = {%x}; say $what();
16:46 evalbot_12079 Error: Cannot cast from VList [VList [VStr "a",VInt 1],VList [VStr "b",VInt 2]] to Pugs.AST.Internals.VCode (VCode)
16:47 audreyt TimToady: {%defaults, x=>1, y=>2} is useful...
16:47 TimToady I'm just thinking if we bias towards hash we could make Hash do .()
16:47 Limbic_Region audreyt - you convince my employer to do so and gladly
16:47 audreyt TimToady: and it would return... itself?
16:48 TimToady I guess it would eval at the wrong time though.
16:48 audreyt indeed
16:48 Limbic_Region ok - so trying 1024m isn't going to help - nothing is going to help except reducing the need for heap under 268,435,456 bytes
16:48 * Limbic_Region wanders off
16:48 audreyt Limbic_Region: we'll get there :) just need to solve this circularity problem...
16:48 TimToady you can say that again
16:49 audreyt first we need to get there...
16:49 TimToady repeat until...
16:50 audreyt while wend...
16:50 TimToady while goto...
16:52 audreyt O: { callback(yesterday), bid time &return };
16:53 audreyt actually, that gave me an idea...
16:54 * audreyt discovers GHC supports self-circular modules
16:54 audreyt so there may exist a purely shave-heap-only hack
16:55 * rw-rw-r-- refrains from the GHB -> GHC comments that're jumping out at him.
16:59 Psyche^ joined perl6
17:03 gaal self-circular modules?
17:05 TimToady repeat while try goto randomlabel() { say "got somewhere" }
17:13 TimToady ?eval $x = try 1 / 0; say $x;
17:13 evalbot_12079 Error: Undeclared variable: "$x"
17:13 TimToady ?eval my $x = try 1 / 0; say $x;
17:13 evalbot_12079 Error: Illegal division by zero
17:15 gaal is try a... combinator now? :)
17:15 gaal ?eval my $x = try { 1/0 }; say $x
17:15 evalbot_12079 OUTPUT[ ] Bool::True
17:15 TimToady ?eval my $x = try { 1 / 0 }; say $x;
17:15 evalbot_12079 OUTPUT[ ] Bool::True
17:15 Psyche^ is now known as Patterner
17:16 TimToady was just thinking how much try is like do, is all...
17:16 TimToady ?eval my $x = do if 1 { 2 } else { 3 }; say $x
17:16 evalbot_12079 OUTPUT[2 ] Bool::True
17:17 TimToady ?eval my $x = try if 1 { 2 } else { 3 }; say $x
17:17 evalbot_12079 Error:  unexpected "i" expecting term postfix op
17:18 gaal try $file or warn "I didn't like it"
17:18 TimToady would parse as try($file or warn "I didn't like it")
17:19 TimToady if try is like do
17:19 svnbot6 r12080 | fglock++ | v6 - " $/ does v6::AST::NBit " temporarily compiles to " 'v6::AST::NBit'->new($::_V6_MATCH_) "
17:19 gaal I was just jocularly referring to the quaint do-FILE syntax.
17:20 aufrank joined perl6
17:20 TimToady try initialize my $x;
17:21 TimToady just trying (ouch) to make a case for dropping the {...} optionally
17:22 TimToady well, probably something worth thinking about in the shower &
17:22 gaal try $ if 1 then 3 else 3 -- oops wrong language
17:23 lumi gaal: Scansion's off :P (Sorry it took so long, I was at a movie)
17:25 gaal lumi: there was a preemptive remark about that...
17:25 gaal ...so I'm waiting for your suggestions :)
17:27 weinig joined perl6
17:27 audreyt gaal: how long does Pugs.ASt.Intrernals take to compile?
17:27 audreyt for you
17:27 vel joined perl6
17:29 weinig joined perl6
17:37 gaal let me check.. <1m
17:38 audreyt (unoptimised, surely)
17:38 gaal yes.
17:39 gaal hold on, I have some local buildbreaking stuffs
17:40 aufrank hi all!
17:40 aufrank I was about to send a post to p6l about this, but it seems like a small enough question that maybe it just warrants asking here
17:41 aufrank how does changing .meta to .META or META() make it more like typecasting?  Is it that there's now a function call form, or is it that the name is now uppercase, or is it something else I'm missing?  What exactly is the typecasting syntax that META and friends are now like?
17:41 gaal unoptimized is about 30 sec. checking optimized.
17:45 gaal 3 minutes w/o instances
17:45 wolverian aufrank, Type $foo, $foo.Type are tentatively typecasts (instead of .as)
17:46 gaal and the instances are another just-under-a-minute.
17:46 svnbot6 r12081 | fglock++ | v6-Compiler - Grammar/Native.pm compiles to usable p5
17:47 aufrank is Type($foo) also a typecast?  because META($foo) now is legal, right?
17:47 gaal this is on a 3mhz p4 under colinux.
17:47 wolverian right. that's what I meant with the first one
17:47 aufrank s/now/is now/
17:47 aufrank I see
17:47 aufrank and the UPPERCASE is just to show that we should fear their power?
17:47 wolverian I assume so, yes. could be Meta too, I suppose.
17:48 gaal how much is it for you, audreyt?
17:48 audreyt unoptimised is about 9sec here
17:49 audreyt going to 7 now
17:49 * aufrank is especially jealous of those with fast hardware
17:49 gaal down to 7 you mean?
17:49 audreyt was somewhere around 20sec
17:49 gaal what did you change?
17:49 audreyt but I might be imagining things
17:50 audreyt moved ~500 lines out.
17:50 gaal oooh
17:50 gaal design by scalpel
17:50 gaal but how long do they take to compile?
17:51 gaal is it the value instances? what can you extract from PAI?
17:51 * gaal is very curious :)
17:52 gaal did you find a silver circularity saw?
17:52 svnbot6 r12082 | fglock++ | v6-Compiler - Emitter/Native/Perl.pm compiles
17:52 audreyt committing.
17:55 svnbot6 r12083 | audreyt++ | * Factor out Pugs.AST.Internals to Pugs.AST.Eval and Pugs.AST.Utils.
17:55 svnbot6 r12083 | audreyt++ |   (This should help with heap consumption a bit.)
17:56 aufrank gaal++ #circularity saw... groan
17:57 cognominal joined perl6
17:58 FurnaceBoy joined perl6
17:58 vel joined perl6
18:01 svnbot6 r12084 | audreyt++ | * Sadly, GHC 6.5-trunk is broken w.r.t. the newtype EvalT
18:01 svnbot6 r12084 | audreyt++ |   in the .hs-boot file, so we only talk about pure functions for now.
18:01 svnbot6 r12085 | audreyt++ | * remove debug "die"
18:04 pasteling "gaal" at 192.115.25.249 pasted "borkage w/6.4.1" (13 lines, 625B) at http://sial.org/pbot/18889
18:04 svnbot6 r12086 | audreyt++ | * more newtype-deriving avoidance.
18:04 gaal heh.
18:05 gaal no, Utils is still broken on my end.
18:08 audreyt fixed, I think.
18:08 svnbot6 r12087 | audreyt++ | * GHC 6.4.1 doesn't grok instance decls in .hs-boot vs deriving.
18:09 pasteling "gaal" at 192.115.25.249 pasted "different error. and oh, I have 6.4.2" (27 lines, 1.2K) at http://sial.org/pbot/18890
18:10 * jferrero is away: Hummm... ahora vengo...
18:10 svnbot6 r12088 | audreyt++ | * opps, redundant instances
18:11 gaal Show for VObject and Val are missing...
18:14 audreyt try again
18:14 svnbot6 r12089 | audreyt++ | * remove all instances from .hs-boot
18:14 kanru joined perl6
18:15 * jferrero is back (gone 00:05:11)
18:16 vel joined perl6
18:16 gaal works, but on unoiptimized doesn't change much. testing again with optimized
18:17 svnbot6 r12090 | fglock++ | v6-Compiler - tests compile; need some v6 runtime work
18:21 gaal no real change :(
18:21 audreyt optimized here doesn't change much
18:21 audreyt unoptimised sees large speedup
18:21 gaal not here - still about 3 minutes
18:22 fglock does Pugs have ' $x does Y ' ? the version I have installed is a bit outdated
18:22 audreyt fglock: it does not
18:22 * jferrero is away: Hummm... ahora vengo...
18:23 gaal but it's still good, because even if the net time hasn't changed, about 20 seconds went to Utils
18:24 fglock does Moose define a default constructor?
18:24 gaal so recompilations triggered by Internals changes will take 20 seconds less.
18:25 TimToady ghc-6.4.1: panic! (the `impossible' happened, GHC version 6.4.1): lookupVers1 PugsziASTziInternals envPos{v}
18:25 TimToady trying a realclean...
18:26 audreyt hm, the impossible happened.
18:26 audreyt I know a fix
18:27 audreyt r12091
18:27 audreyt (oberved on feather as well)
18:27 svnbot6 r12091 | audreyt++ | * inhibit the "impossible" error caused by bogus unboxing.
18:27 audreyt fortunately we don't have to support 6.4.0 anymore.
18:27 audreyt (otherwise this wouldn't even be possible)
18:30 fglock re Moose: I guess Moose::Role doesn't have new(), so I'll have to use plain Moose by now
18:31 weinig joined perl6
18:32 kanru joined perl6
18:33 audreyt fglock: what do you need M::R->new for?
18:33 lumi joined perl6
18:35 fglock audreyt: I need to emulate ' $object does role '
18:35 fglock I'm trying with ' role->new( $object ) '
18:35 fglock for creating ast nodes
18:36 audreyt ah. anonymous class
18:36 audreyt and runtime mixin
18:36 audreyt moose probably doesn't do that yet
18:37 fglock no, I asked Stevan yesterday
18:38 TimToady compiled, smoke in .5 hr
18:38 TimToady lunch &
18:39 fglock audreyt: other than this, p6p6 is already possible - so I'll cheat with plain classes for a while
18:39 audreyt yup
18:39 stevan fglock, audreyt: soon,.. nothingmuch and I just discussed the underlying core for supporting this
18:39 fglock stevan: wow
18:40 stevan right now I am fighting p5's DWIMery in regard to typeglobs/symbol tables
18:40 stevan I think i need to do this in XS,.. but my C-fu sucks
18:40 FurnaceBoy_ joined perl6
18:40 * stevan is looking for volunteers if anyone is interested :)
18:40 gaal otherwise the fix for the impossible would not be possible? that's dire.
18:41 fglock stevan: I don't even need the sugar, plain method/subs would do
18:41 vel joined perl6
18:42 audreyt wow, nearly 3am.
18:42 * jferrero is back (gone 00:19:48)
18:42 * audreyt waves and goes to sleep.
18:42 stevan fglock: the problem is in how Class::MOP destroys anon-classes,..
18:42 audreyt or reuse them
18:42 stevan the anon-class DESTROY hook needs to be attached to the instance's DESTROY
18:43 audreyt "Foo does Bar" can be memoized as Foo__Bar or something like that
18:43 svnbot6 r12092 | audreyt++ | * AUTHORS: If we have to have a UTF8-BOM mark, at least make it a line by itself...
18:43 audreyt and then just instantiated normally
18:43 audreyt the next time $foo doe sBar happens, that metaclass is reused
18:43 audreyt don't attach it to instances
18:43 audreyt for perl5 is not ruby
18:43 stevan audreyt: no, the anon-class is destroyed
18:44 stevan and the package is removed
18:44 stevan etc etc
18:44 stevan when the metaclass goes out of scope
18:44 stevan this is how basic anonclasses work in Class::MOP
18:44 audreyt I understand for singleton methods
18:44 audreyt that you need to do that
18:44 stevan we cant re-use this for roles
18:44 audreyt but "$foo does Bar" warrants a nominal approach
18:44 stevan I agree with you :)
18:45 audreyt how surprising :)
18:45 * audreyt smiles happily and goes back to sleep
18:45 stevan I just have to write that approach,.. what I am saying (and I am afraid not being very clear about) is that we cannot re-use some of the existing mechanisms in C::MOP :)
18:47 stevan but before we tack on too much to the existing role implemenation, we need to clean up some uglies in the design
18:47 weinig joined perl6
18:47 stevan (see my babble the other day about attributes being composed as mini-implicit-roles)
18:50 aufrank stevan: Class Point { has $x; has $y } is actually Class Point { does has_x; does has_y; Role has_x { $x }; Role has_y { $y } }   # ???
18:52 PerlJam except that two "has $x" is compile-time conflicty, while two "does has_x" is not.
18:55 aufrank Role has_x is unique { $x }
18:56 aufrank Roles that is, is there a trait or a role that roles can do to make them compile-time conflicty?
18:57 aufrank s/Roles//
18:58 gaal why *do* we have to have a BOM mark in AUTHORS?
18:59 wolverian kill it with fire
19:00 Patterner UTF-*?
19:00 wolverian UTF-8
19:00 wolverian should be fine without a BOM
19:00 Patterner and 16?
19:00 wolverian we don't have UTF-16 in pugs, I hope.
19:03 stevan aufrank: not really
19:03 stevan aufrank: it is more like this ... class Point { has $.x; } translates to the following meta calls
19:04 stevan ^Point := ^Class.new(:name<Point>); ^Point.add_attribute('$.x');
19:04 stevan then inside add_attribute, we create a new instance of ^Attribute.new(:name<$.x>)
19:05 stevan then ask the attribute for its representation as a role my $attr_role = $attr.get_as_role;
19:05 stevan then apply that role into the class
19:05 stevan this allows us to use the same role combination logic for adding attribute accessors into a class
19:06 meppl guten abend
19:06 stevan but this is implicit composition, so not something userland needs to worry about,.. or even see
19:06 froh-doh joined perl6
19:06 stevan good night meppl
19:06 meppl good evening stevan
19:07 vel joined perl6
19:07 meppl sry for my non english amsg, again
19:08 bernhard joined perl6
19:08 stevan meppl: forgive my lack of german skills :)
19:12 Patterner german is simple. Auch Ich sprechen Deutsch...
19:13 aufrank stevan: I think I see :)
19:15 chris2 joined perl6
19:15 svnbot6 r12093 | fglock++ | v6 - non-working 'role' hacks
19:15 svnbot6 r12092 | audreyt++ | * AUTHORS: If we have to have a UTF8-BOM mark, at least make it a line by itself...
19:23 vel joined perl6
19:30 weinig joined perl6
19:49 vel joined perl6
19:51 lumi joined perl6
19:55 DaGo joined perl6
20:06 jferrero joined perl6
20:16 Zemyla joined perl6
20:18 Limbic_Region joined perl6
20:18 Limbic_Region question regarding t/examples/examples.t
20:19 Limbic_Region is there a reason why the list of examples is hardcoded?
20:19 Limbic_Region I just tried to run examples/cribbage_scoring.pl and it doesn't parse
20:19 cmarcelo joined perl6
20:21 Limbic_Region I know by making a suggestion I am pretty much signing up to do it, but ...
20:21 Limbic_Region while certain tests can have their output validated against previously recorded output
20:21 Limbic_Region wouldn't it be worth while to verify that all examples at least parse (even if they don't run)?
20:24 bpphillips left perl6
20:25 Limbic_Region . o O ( he says as he heads for the door )
20:33 yuval joined perl6
20:39 pasteling "yuval" at 217.132.6.238 pasted "Failed to compile pugs with parrot-0.4.6" (39 lines, 4K) at http://sial.org/pbot/18896
20:47 nothingmuch hello, bretheren
20:47 yuval :)
20:48 weinig joined perl6
20:48 yuval hey. i kinda wanted to commit the new parrot ebuild tonight, only that pugs won't compile with it :(
20:50 * nothingmuch avoids reading that nopaste
20:50 nothingmuch had to go visit a friend 20 minutes ago
20:50 larsen joined perl6
20:56 spinclad i can see the obvious, that either Parrot_on_exit and Parrot_exit have changed or their calls are broken...  it'll take a while for me to look into, tho
20:57 yuval ok, thanks
20:57 FurnaceBoy joined perl6
20:58 kolibrie are yuval and nothingmuch twins, or should I disassociate those nicks in my mind
20:59 spinclad twins in name only, i fancy
20:59 lumi They are brothers in Yuvality but separate people
20:59 spinclad yuvalitude
20:59 kolibrie thank you
20:59 spinclad yuvalitudinosity
20:59 * yuval smacks his forehead
21:00 spinclad sorry, playing with names can be hard on the named i guess
21:00 lumi It can be traumatic I guess
21:00 lumi A head trauma in this case
21:02 Patterner noyovality.
21:03 lumi yuvalation?
21:03 lumi gaal: conscious?
21:03 spinclad but gaal's not the one with the head trauma
21:04 lumi No, but he's the one to praise for the new AST, about which I've a question
21:05 spinclad ah, that's all right then
21:11 cjeris left perl6
21:15 soisoisoi joined perl6
21:18 SageLT joined perl6
21:19 shachaf joined perl6
21:20 TimToady yuval: is that the 2.2.12 release of pugs? if so, we've already fixed that in the current pugs.
21:20 TimToady *6.2.12
21:22 TimToady I always compile pugs against bleadparot
21:22 TimToady bleadparrot even...
21:25 xinming joined perl6
21:26 jferrero joined perl6
21:26 xinming anyone here uses svk?
21:27 * Khisanth tries to
21:27 xinming It seems, there is a problem on parrot server. :-/
21:27 xinming Khisanth: switch to svk, It's really powerful. :-)
21:27 TimToady I just svn'd up from there, but maybe svk is being disagreeable.
21:27 Khisanth I try but I have to figure out how to grab a copy of $work's repo first :)
21:28 xinming TimToady: Yes, whenever I try to `svk sync /parrot/mirro`, It tells me on md5sum mismatch.
21:28 xinming that's why I ask if there is a sollution yet.
21:29 TimToady I'm no expert in svk, alas.  Or maybe, fortunately...
21:30 spinclad chip has brought the question to #svk
21:30 xinming Khisanth: hmm, If you wish, I'll tell you how to work with svk. :-P
21:30 spinclad there seem to be some damage around some recent revs
21:31 Khisanth xinming: I need to know how to *dump a repo that can be "imported" by svk
21:31 xinming use svnadmin
21:32 xinming Khisanth: svnadmin can dump revisions to a file, and then, use svnadmin load to load the file into reopsitory.
21:32 Khisanth in other words, now to create something like http://www.parrotcode.org/svk-bootstrap-dump.bz2
21:32 tup joined perl6
21:33 xinming Khisanth: svnadmin dump --deltas repository_to_load > repository.dump
21:33 xinming I've made the dump for parrot and pugs
21:34 xinming in www.perlcabal.org/~xinming/
21:34 Khisanth I tried that actually but then how do I update?
21:34 xinming Khisanth: did you tried the link I give you?
21:34 xinming hmm, I think I forgot to make svk map the depot.
21:35 xinming Khisanth: How about a seperate channel for avoiding flodding this channel?
21:37 Khisanth I think you are misunderstanding me, I am not doing this for parrot or pugs, and what I need is actuall step 0
21:39 xinming Khisanth: Do you mean how to make a dump file?
21:40 Khisanth ok, the problem is that I was able to create the dump file, then import it back locally but when doing svk sync, it didn't know where the remote repo should be
21:41 xinming Khisanth: did you mirror the repo first?
21:42 Khisanth let me retry this tomorrow to have more exact errors :)
21:42 xinming Khisanth: hmm, Or, I think you forget to make the depotmap in svk
21:42 xinming Khisanth: Ok
21:42 Khisanth and yes I did try that as well but then I could reload it
21:43 Khisanth couldn't, complained that it already exists
21:43 Khisanth I am thinking I either did an extra step or I am missing one
21:44 gaal lumi: no.
21:44 xinming Khisanth: If it says, that it already exists, I think you mirrored it twice. don't know. :-/
21:45 lumi I'm going to sleep, wedding tomorrow morning (not mine). I'll hack it through then
21:45 lumi gaal: While you're unconscious, why is there no c_enterBlocks?
21:45 Khisanth ok I have a copy of the bz2 so I guess I could try it now
21:45 gaal let us see...
21:46 lumi Or c_leaveBlocks either, I now note
21:47 gaal hmmm, the reason is that ENTER and LEAVE are not mentioned in S06
21:47 gaal but that may not be a good reason
21:48 lumi They're in S04 apparently
21:48 gaal yes... please add
21:48 gaal and judging by the length of that list those two may not be the only ones that are missing
21:50 lumi afaics only CONTROL and CATCH aren't there, and I don't know if this is where those should be
21:50 gaal by all means hack away if you spot any problems
21:51 lumi I hack, but tomorrow
21:51 gaal they should, but not in lists because they can each only occur once if they occur at all.
21:51 gaal lumi++
22:06 xinming bbl
22:08 yuval TimToady: yes, it is 6.2.12
22:14 jmf 1..^2 does not match 1.9?
22:16 hexmode joined perl6
22:21 TreyHarris ?eval 'a' ~~ <a b c>
22:21 evalbot_12079 is now known as evalbot_12093
22:21 evalbot_12093 Bool::False
22:21 jmf ?eval 1 ~~ 1..2
22:21 evalbot_12093 Bool::False
22:22 TreyHarris write a test :-)
22:22 jmf lol
22:22 jmf that should not be happening right?
22:23 jmf ?eval 2 ~~ 1..3
22:23 evalbot_12093 Bool::False
22:24 svnbot6 r12094 | Sage++ | Updating my documentation for the translator.
22:25 TreyHarris right.  look at S03.  The two Range definitions are broken, as is the Array ~~ Num and Array ~~ Str
22:25 TreyHarris at least...
22:25 TreyHarris ?eval <foo bar bat bot> ~~ /o/
22:25 evalbot_12093 is now known as evalbot_12094
22:25 evalbot_12094 Match.new(   ok => Bool::True,    from => 1,    to => 2,    str => "o",    sub_pos => (),    sub_named => {} )
22:25 TreyHarris ?eval <faa bar bat bat> ~~ /o/
22:25 evalbot_12094 Match.new(   ok => Bool::False,    from => 0,    to => 0,    str => "",    sub_pos => (),    sub_named => {} )
22:25 TreyHarris Array ~~ Regex works though.
22:26 TreyHarris look at the table in S03.  i think there's already a test for each of those though--maybe it's :todo
22:27 svnbot6 r12095 | Sage++ | The print and printf translations now use a colon instead of a comma. Thanks to lwall for the catch.
22:27 svnbot6 r12095 | Sage++ | Running with -R now translates captures to explicit aliases, so -R no longer breaks captures.
22:27 svnbot6 r12096 | Sage++ | Updating ASTTranslate to match my personal copy (ASTTranslate-sage)
22:27 jmf TreyHarris: should i still write a test or its a known problem?
22:29 TreyHarris look at t/operators/smartmatch.t.  the range ones at least are :todo
22:29 svnbot6 r12097 | Sage++ | My makefile, at this point it actuall just aliases "ghc --make -o translate ASTTranslate.hs".
22:29 svnbot6 r12097 | Sage++ | Use "make sage" to make based on ASTTranslate-sage.hs instead, which is usually a much newer version.
22:29 svnbot6 r12098 | Sage++ | The test script for the translator is now better documented, so other people can really use it. Useage has changed some too.
22:31 TreyHarris ?eval 5 ~~ 5 ^..^ 10
22:31 evalbot_12094 is now known as evalbot_12097
22:31 evalbot_12097 Bool::False
22:31 TreyHarris that's commented out though.  i'm not sure why
22:31 jmf it seems like none of them are working
22:31 TreyHarris jmf: correct, but the ones that expect false are working, so the test isn't commented or :todo :-)
22:32 jmf but for the test: i can't tell what the intended behavior is for a..^b
22:32 TreyHarris jmf: should be a <= $n < b
22:32 jmf should it be like a..b-1 (for rationals)
22:32 TreyHarris ohhhh :-)
22:32 jmf ok so 1..^2 should match 1.9
22:32 TreyHarris heh.
22:33 TreyHarris how are ^.., ..^, and ^..^ defined in the synopsis?
22:33 jmf its not clear to me
22:33 jmf it says it excludes the endpoint
22:33 jmf it seems like it should be [a,b)
22:33 TreyHarris jmf: no, there's an explicit example in S02:
22:33 TreyHarris 1.5 ~~ 1^..^2  # true, equivalent to 1 < 1.5 < 2
22:34 TreyHarris so there ya go
22:34 jmf oh i see its in S03 too also actually
22:34 TreyHarris so i was right.  it's a <= $n < b, not a <= $n <= b - 1
22:34 jmf yeah that makes sense
22:34 TreyHarris sorry, i meant S03
22:45 markstos_ joined perl6
22:49 weinig joined perl6
22:53 jmf TreyHarris: what is the plan #; statement for?
22:55 weinig joined perl6
22:58 markstos_ In Perl6, what's the equivalent of Data::Dumper ?
23:09 TreyHarris jmf: just like test plan in Perl 5.  it says how many tests are in the file, so that if testing aborts early, it can tell you
23:09 TreyHarris markstos_: .perl
23:09 TreyHarris don't think it's implemented yet...
23:09 TreyHarris ?eval my @f = <foo bar bat>; @f.perl
23:09 evalbot_12097 is now known as evalbot_12098
23:09 evalbot_12098 "[\"foo\", \"bar\", \"bat\"]"
23:10 TreyHarris oh, looky there
23:10 markstos_ TreyHarris. Thanks. Yeah, it works here, too. Cool.
23:12 markstos_ I have an array, whose first element is a hashref. I want to copy that another href. Using a syntax something I had in Perl5 doesn't work:
23:12 markstos_ ?eval %$copy = %{ ({a => 'b'}) };
23:12 evalbot_12098 Error:  unexpected "{" expecting "::"
23:16 TreyHarris ?eval my $copy = ({a => 'b'})[0]; $copy<a>
23:16 evalbot_12098 Error: Cannot cast into Array: VRef <Hash>
23:16 TreyHarris ?eval my $copy = ({a => 'b'},)[0]; $copy<a>
23:16 evalbot_12098 \"b"
23:16 TreyHarris don't know if that's what you mean
23:17 * markstos_ checks something
23:18 markstos_ TreyHarris-- I checked and the syntax you suggest doesn't copy. It's the same way Perl5 works. Because it's a reference, they reference the same thing. Changing copy changes the original.
23:19 markstos_ But in Perl5 you can do this to get a real copy, I htink : %$copy = %$orig;
23:20 markstos_ Here, the failure phrasing is "Internal Error", making it sound like a pugs bug that it doesn't work.
23:20 jmf ?eval my %copy = [({a=>'b'})]
23:20 evalbot_12098 {("a\tb\n" => undef),}
23:21 markstos_ strange result.
23:21 jmf ?eval my %copy = ({a=>'b'})
23:21 evalbot_12098 {("a" => "b"),}
23:21 jmf ?eval my %copy = [({a=>'b'})][0]
23:21 evalbot_12098 {("a" => "b"),}
23:21 jmf ?eval my %copy = ({a=>'b'})[0]
23:22 evalbot_12098 Error: Cannot cast into Array: VRef <Hash>
23:23 markstos_ This doesn't produce an error, but it doesn't copy it, either: they still reference the same values:
23:23 markstos_ %$copy = @data[0];
23:24 markstos_ You can check by modifying %copy, and then looking at @data.perl.
23:25 markstos_ My solution for now is to add extra step, but using this syntax, and then making a reference to \%copy later: my %copy = @data[0];
23:25 markstos_ That makes a real copy.
23:25 jmf this seems to work
23:26 qmole joined perl6
23:26 TreyHarris if you use a hash type, it works.  %copy = @data[0]
23:27 jmf yea
23:28 TreyHarris also %{$copy} = @data[0] works
23:29 markstos_ Aha.
23:29 jmf ?eval my @array = {a=>'b'},; my %copy = @array[0]; %copy{'a'} = 5; say %copy.perl; say @array.perl
23:29 evalbot_12098 OUTPUT[{("a" => 5),} [{("a" => "b"),},] ] Bool::True
23:29 markstos_ It's interesting that %{ @data[0] } is not required in Perl6.
23:29 markstos_ Here we copy a hashref to a full hash: %copy = @data[0].... doesn't seem quit right that it works that way.
23:30 jmf you want to make a copy then get a ref to the copy?
23:31 markstos_ jmf: That was the original plan. It turned out that gettin a ref to the resulting copy wasn't necessary, so I changed my code here.
23:31 TreyHarris markstos_: just like in perl 5, the LHS imposes context on the RHS
23:33 markstos_ So by putting a hash on the left side, the hashref on the right is transformed in a "hash context" ?
23:36 markstos_ In Perl5, I store internal stuff in objects with $self->{__FOO}; What's the corresponding recommended idiom for Perl6?
23:36 TreyHarris markstos_: correct enough for government work :-)
23:36 TreyHarris markstos_: please read S12
23:36 markstos_ Will do.
23:37 TreyHarris markstos_: it should make it very clear, but if it doesn't ask again
23:37 markstos_ Sometimes I don't know where to start when I need some docs to get going.
23:37 TreyHarris just go to http://dev.perl.org/perl6/doc/synopsis.html , you should be able to read the whole kit and kaboodle in six hours or less
23:37 lambdabot Title: Synopses - perl6
23:38 markstos_ Maybe it will clarify the difference between 'package', 'class' and 'module' in Perl6 for me as well. :)
23:40 jmf TreyHarris: do you know if the ?& ?| operators are supposed to be working right now/
23:40 mauke_ joined perl6
23:41 jmf ?eval 5 ?& 4
23:41 evalbot_12098 Error:  unexpected "?" expecting comment, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
23:44 TreyHarris jmf: it's todo, but please write a test, there is none (except in assign.t)
23:46 Bit-Man joined perl6
23:47 markstos_ oh joy, I managed to trigger a bug in the Haskell compiler.
23:48 TreyHarris if something simple like that doesn't even parse, you can (usually) assume it's todo
23:50 jmf ok thanks...for testing should i add to the existing .t files or create new ones?
23:50 diakopter joined perl6
23:55 svnbot6 r12099 | fglock++ | PCR - fixed '..' in char classes
23:55 mauke_ is now known as mauke

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo