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