Check your feather email | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com | www.treehugger.com/files/th_images/paradigm.jpg
Set by audreyt on 29 August 2006.
markstos I can't find any tests for "Calling Sets of Methods": feather.perl6.nl/syn/S12.html#Calli...of_methods 00:03
lambdabot Title: S12, tinyurl.com/ga3uw
markstos so I'm going to add some.
This is exactly a feature I could use to clean up some code in CGI::Application. We use it to implement a plugin scheme there, going to the inheritence tree to call all the methods any class for particular plugin slots. 00:05
00:05 jferrero joined
TreyHarris markstos: to answer the question in your comment (how to just pass %h), there are at least three ways, none of which are currently supported 00:07
markstos audreyt mentioned [,]%h, which I guess is one of them.
TreyHarris 1. test_dispatch(%h:<m1 m2 call expect>)
2. test_dispatch([,](%h))
3. sub test_dispatch ({:$m1, :$m2, :$call, :$expect}) ... test_dispatch(%h) 00:08
markstos So only #2 allows to pass through truly arbitrary data.
TreyHarris no, none of them do
well, only three does, if you do it like this: 00:09
3. sub test_dispatch ({:$m1, :$m2, :$call, :$expect, *%arbitrary_hash_data}) ... test_dispatch(%h)
markstos [,]%h looks arbitrary. :)
TreyHarris nope, named arguments have to be named arguments... if there are keys in %h that don't map to named arguments of test_dispatch, and test_dispatch doesn't accept a slurpy hash, then you're calling the subroutine with extra parms and will get a failure at runtime. 00:10
s/parms/params/
audreyt markstos: as re 00:11
01:38 < svnbot6> r12965 | markstos++ | The spec is not specific about multi method dispatch details, saying:
clkao *yawn*
audreyt markstos: please see docs/notes/mmd-draft.txt
markstos So [,]%h, plus a slurpy hash is a solution.
audreyt markstos: I've been trying to get TimToady bless it :)
TreyHarris waves at audreyt
audreyt markstos: but it's the closest as we have for the dispatch defaults
TreyHarris audreyt: we've been on different circadians for several days now :-)
audreyt we have.
markstos audreyt: Wow, it's been 8 hours since you went to sleep already. I should go outside before it's dark here... 00:12
TreyHarris audreyt: did you notice the interactive problem with LoH literals I've been mentioning for a few days now?
audreyt I managed to completely miss it.
clkao audreyt: hey. how about making jifty's moosification with Web::Field::* converted first. they seem more isolated
markstos audreyt: I'll review that doc. Thanks.
audreyt clkao: sure, feel free to pickup the branch and run with it...
TreyHarris audreyt: only at the interactive pugs prompt, not in read code, and not in -e, and not in eval, "({a => 'a'}, {b => 'b'})" segfaults 00:13
clkao audreyt: i meant how about you finishing it up ;)
audreyt clkao: or, if you want me to do the pickup, that probabaly needs to wait till next week
clkao alright. i will haraess you next week
audreyt I have pugs releng to do first :)
TreyHarris audreyt: i was at a total loss as to how to document with a test short of implementing Expect in P6 :-)
audreyt "until next week"
clkao "hide until"
audreyt TreyHarris: it doesn't segfault for me 00:14
TreyHarris: so give me a gdb bt?
gdb ./pugs
run
pugs> expr
bt
markstos Are all of these considered current? docs/notes/mmd.kwid docs/notes/mmd_match_order.txt docs/notes/multimethods.pod
audreyt markstos: no. oh wow 00:15
sorry. only misc/pX/Common/mmd-draft.txt is current
the others are materials to make misc/pX/Common/mmd-draft.txt
markstos ?eval @%(a => <b>)<a>
00:15 evalbot_12953 is now known as evalbot_12966
evalbot_12966 (no output) 00:15
pasteling "TreyHarris" at 207.171.180.101 pasted "gdb output showing segfault on LoHs" (17 lines, 620B) at sial.org/pbot/19433
audreyt ?eval @(%(a => <b>)<a>) 00:16
evalbot_12966 ["b",]
markstos TreyHarris: My eval might related to your segfault: It segfaults too, which is why evalbot doesn't return.
I added a test for it in t/data_types/hash.t
audreyt it dies in showHex! wow
completely unexpected
this GHC 6.4.1 on powerpc? 00:17
TreyHarris 6.4.2, ppc
audreyt okie. fixing
TreyHarris but it has been seen on linux and on 6.4.1
clkao what's exciting in new release?
audreyt clkao: embed perl5 by default; 2x+ faster runtime, esp. compiled with GHC 6.6; support UTF* in source; Roles actually work instead of being poor inheritance imitations 00:18
clkao (!) 00:19
embed perl5 by default? how come?
audreyt much faster sparse arrays and hashes
how come not? I think it's culturally important
as it enables us to use PCR isntead of PGE for rx://
markstos I think it's important to.
audreyt and P5Re instead of PCRE for rx:P5//
and Moose and Data::Bind for callconv.
(to p5land)
markstos With it, I think people will use the CGI::App port sooner.
Without out, it's a hassle to get a decent default template engine. 00:20
audreyt yes. having to enable p5embed by hand was only a workaround because activeperl was b0rk
but now it's fixed, there's no excuse anymore
as per spec, any perl6 implementation must be able to run perl5.
markstos That's part of the spec, though? *surprised*.
audreyt yes. S01: 00:21
Migration is important. The perl interpreter will assume that it
is being fed Perl 5 code unless the code starts with a "class" or
...
and other various places.
markstos Right. I recall that now.
clkao wsaueggcellent
TreyHarris audreyt: i tried to do use p5:IO::Prompt, and the only way I found to call prompt was via perl5:IO::Prompt.can('prompt'). is this expected behavior? 00:22
audreyt TreyHarris: no. you should be able to
use perl5:IO::Prompt 'prompt';
prompt(...)
the "default import" doesn't yet quite work with our lexical import
clkao remembre to put something in __DATA__...
audreyt so you need to be explicit
for now
clkao iirc that was on my list
but it didn't seem that people care 00:23
audreyt people will start to care very soon.
pasteling "TreyHarris" at 207.171.180.101 pasted "audreyt++'s syntax worked, but it panicked" (4 lines, 250B) at sial.org/pbot/19434 00:24
audreyt oy.
audreyt looks at clkao
clkao are we set in pdx hackathon?
lets fix that in yapc::sa? ;)
audreyt i've been waiting from semaphor from bestpractical
sure ;) 00:25
s/from/for/
clkao Want is evil
audreyt as befits damian's module
clkao okay. let's sort it out tomorrow. i should book my tickets
audreyt 'k
clkao plans birthday drinks
audreyt ah right. your birthday is nigh 00:26
markstos audreyt: mmd-draft.t doesn't mention optionals at all. Should I patch it ?
clkao yaq
horrible
audreyt markstos: sure!
markstos: that algorithm should get reflected Sub::Multi in full, too, which is another piece of p5 hacking open for hacking :) 00:27
clkao aaaaaah!
i irc there was soemthing blocking 00:28
markstos Let's see about getting it blessed before we start spreading around implementations of it too far.
clkao i can't remember
TreyHarris is anybody using irssi and actually seeing the random non-ascii strings that show up on here regularly? and if so, is there some trick? (i'm using a unicode font that has the characters in question for my terminal. but i'm also using screen, which maybe is the problem)
clkao see, iam getting old
audreyt markstos: I think the only nonblessed part is syntax, actually.
markstos: namely, the use of
sub f ($x ; $y ;; $z)
clkao audreyt: qtell me again about this *@@; thingy
audreyt to denote levels instead of
markstos The double semicolon ?
audreyt sub f ($x ; $y ; $z)
to denote the same thing
yes.
clkao: ok... when you pass in multiple feeds 00:29
markstos Ok. What I have to say about optionals probably won't make any headway on the double semi-colon debate.
audreyt each feeds being a list of pos and a map of nam
markstos: it's purely syntax, too, so orthogonal to optionals
clkao mmmmmmm seems complicated 00:30
audreyt clkao: and when the Sig part is of sigil @@x on slurpy position
then @x is bound to a list of that feeds
markstos I don't think it's purely syntax, as it also implies an extra level of distinction, which otherwise wouldn't exist.
audreyt with each element being a Capture of nam/pos of that feed slice
markstos: uhm no. the spec currently already makes that level of distinction
markstos: the spec currently says
"add one semi at end if there's no semi" 00:31
"then, the final semi denotes ;;"
semantically it's entirely equivalent
it's the same underlying model
markstos interesting.
clkao airhgt... so there can be names+pos in each ;-separated ones
?
audreyt yes.
clkao give me an example
?
is it somewhere in example/ or t/ ?
markstos Anyway, perhaps the new optionals clause will nudge resolution on that issue.
audreyt clkao: no, examples only has 00:32
for each(1,2,3;4,5,6) { ... }
clkao aaah what should it be doing
audreyt iterating thru 1,4,2,5,3,6
markstos: cool 00:33
clkao what's the prototype like? 00:34
TreyHarris markstos: what is your tweak involving optionals?
markstos TreyHarris: I'm thinking it through now, but will make all tests pass that I just sent to p6l when I wrote about the issue there. 00:35
s/will/it will/ :)
00:36 spoopithy is now known as spoop
markstos I hope it will just clarify what people expect to happy anyway. :) 00:36
00:38 lectus joined 00:41 nothingmuch joined
markstos The optionals rule boils down to this, which addresses all the related tests: 00:42
For each optional parameter, a case with and without the optional parameter is considered, and the case with it is attempted to match first.
lectus Is perl 6 available for windows?
audreyt lectus: yes, try www.jwcs.net/~jonathan/perl6/ 00:43
lambdabot Title: Jonathan Worthington :: Perl 6 / Parrot
lectus thanks
is it possible to test perl 6 without touching my current Active Perl setup? 00:44
markstos I don't even think we need the clause: "and the case with it is attempted to match first.", because when you consider an optional parameter as two cases, best matching spec'ed elsewhere should Do The Right Thing. 00:46
TreyHarris markstos: do you mean that it's possible that you will call a multi with an optional parameter that doesn't exist in the signature of the sub you end up calling? that seems very.... perl5ish... maybe not in a bad way. i'm just not used to Perl 6 ignoring extra parameters the sub doesn't refer to 00:49
svnbot6 r12967 | markstos++ | Add section on optionals and slurpies to mmd-draft.txt,
r12967 | markstos++ | which was otherwise unaddressed.
00:49 ayrnieu joined
markstos TreyHarris? Could you clarify with an example? I included some examples I had in mind in the change I made. 00:50
TreyHarris looking...
markstos be back in 20 min or so. 00:51
TreyHarris audreyt: what do you think of my suggestion of changing but's semantics to clone, and to have a "is cloned" parameter trait? 00:53
audreyt lectus: sure 00:55
lectus: if you'd like to use your activeperl modules with perl6, maybe helps us testing the perl5 embedding? 00:56
lectus: you can do that by installing TortoiseSVN or Subversion
check out svn.openfoundry.org/pugs/ with it, installing GHC by extracting haskell.org/ghc/dist/current/dist/g...w32.tar.gz into c:\ghc\, and then 00:57
lambdabot Title: Revision 12954: /
audreyt perl Makefile.PL
nmake
on the checked-out pugs directory 00:58
that should give you a pugs.exe that can use perl5 modules installed in activeperl
TreyHarris: deep clone?
01:08 theorbtwo joined 01:10 weinig|bbl is now known as weinig
pasteling "TreyHarris" at 207.171.180.101 pasted "cloned trait" (10 lines, 279B) at sial.org/pbot/19435 01:12
TreyHarris audreyt: i was thinking like that ^^^^
audreyt yay, the GHC pumpking solved the segfault
nice that there's dedicated fulltime support for GHC nowadays :)
nothingmuch audreyt: nothingmuch.woobling.org/MO/ 01:13
lambdabot Title: Index of /MO
nothingmuch very simple split runtime/compile time metamodel
single inheritence, stupid attrs with rw accessors
but all nicely decoupled
c3 MI + roles tomorrow, maybe
then smarter layouts
then foreign dispatch types 01:14
it needs to not uses hashes as rvalues
but aside from that i'm happy with the code
svnbot6 r12968 | audreyt++ | * Igloo++ solved the showHex segfault, by advising us to
r12968 | audreyt++ | unsafeCoerce# into an unboxed word (Word#) instead of a
r12968 | audreyt++ | boxed word (Word), which will work for value types as
r12968 | audreyt++ | well as for mutable types.
audreyt oh wow.
nothingmuch++ nothingmuch++ nothingmuch++
is this going back to C::MOP some day? :)
nothingmuch i hope so 01:15
i need to convince stevan it's sane
my Master Plan is that the methodtable responderinterface can be compiled to perl 5 packages
everything else is just going to be slow dispatch ;-)
audreyt aye aye
nothingmuch also
note lack of bless {}
it's not using perl 5's OO at all at this stage 01:16
aside from bootstrapping the metamodel
audreyt TreyHarris: I see what you mean
but perl6's .clone amounts to .perl.eval
i.e. thoroughly deep clone
nothingmuch hmm 01:17
audreyt though maybe it's okay for "but".
nothingmuch: yes, I see that.
very, very nice.
nothingmuch it could also use a bit of memoization, since everything is 'is ro' for now, too 01:18
TreyHarris audreyt: ahhh. of course it can be overridden (and that was my motivation for using .clone in the first place), but the default will be most common, so that's probably bad. is there a shallow clone?
audreyt TreyHarris: actually whether .clone is deep or shallow 01:19
appears to be unspecced!
nothingmuch anymoose
good night
TreyHarris but causing its LHS to change is just very, very surprising, and i don't think it's desirable
nothingmuch votes for shallow
too many ways to do deep
wrt "singletonish" objects
audreyt I'm fine with shallow.
nothingmuch e.g. DBIx::Class rows referring to their result source 01:20
cloning the entire schema is not a good idea ;-)
audreyt TreyHarris: ok, so shallow copy for "but" blocks
sounds sane. can you supply a patch to p6l on S12:610 and related places? 01:21
TreyHarris i was thinking it was very natural for "XXX but" to map, not to "do given XXX", but to "do given XXX -> $xxx is cloned", but I was assuming .clone is shallow
audreyt "$xxx is clone", btw. 01:22
we don't say "$xx is copied"
or maybe we should, but anyhow :)
audreyt not really have a strong opinion on ergonomics 01:23
TreyHarris: but I agree with the sentiment
(does the "but" in above sentence clone TreyHarris?)
nothingmuch audreyt: whs that p6l request to me? 01:24
audreyt nothingmuch: no, to TreyHarris
my request for you is to sleep :) 01:25
nothingmuch ah
=)
yes, working on it
TreyHarris: YOU LIKE SHALLOW CLONES
</hypnosis>
TreyHarris <zombie>I LIKE SHALLOW CLONES</zombie> 01:26
nothingmuch HERE IS YOUR SHALLOW CLONE SHERBERT 01:27
TreyHarris audreyt: um, S12:610 is talking about hyperops on junctions... 01:28
audreyt er, typo. 510. 01:29
clkao win 25
audreyt clkao: sounds like your birthday motto
clkao errr.that's a bit silly 01:30
;)
it's a square number1 what should i do this year
audreyt I didn't know you attach special meaning to square numbered ages... 01:31
clkao i don't know either. it just came up 01:33
audreyt hmmm 01:36
make svk the first widely deployed p6 app? :)
clkao heh 01:37
audreyt looks at what darcs did to haskell :D
clkao nice try
if only everything works...
audreyt when darcs was started, almost nothing works in GHC for realworld apps either...
clkao ....
audreyt droundy's talk at last year's ICFP was basically how he coerced more and more stuff into GHC that makes it fast/featureful/compact enough 01:38
clkao giggles
markstos interesting.
clkao tell me again when i am done with birthday drinking tomorrow
audreyt heh sure
clkao it might be possible after some beers/wines
TreyHarris audreyt: since unlike .valid, everything produces a .SKID, is there a way to distinguish whether a given value is of a value type or not? 01:42
01:42 weinig is now known as weinig|bbl
audreyt there's no .valid anymore 01:42
01:42 weinig|bbl is now known as weinig
ayrnieu ?eval <1>.SKID 01:43
01:43 evalbot_12966 is now known as evalbot_12968
evalbot_12968 undef 01:43
TreyHarris right, that was my point. .valid would return undef if the object was a non-value type. .SKID returns an address. so you can use .SKID in boolean context like you could for .valid
svnbot6 r12969 | audreyt++ | * hash.t: Correct the segfault test to test for segfaults.
audreyt hm, we need a .META.isValueType
except not capitalized as such
add it to the spec too?
TreyHarris ok 01:44
audreyt .META.mutable or something
TreyHarris is "foo" mutable?
audreyt no.
svnbot6 r12970 | audreyt++ | * More unsafeCoerce# and segfault avoidance.
audreyt hell no.
we are not ruby, after all. 01:45
TreyHarris lol. is class Point { has $.x is rw; has $.y is rw; } mutable?
audreyt an instance of that class would be mutable.
ayrnieu whath, the class definition?
audreyt the class itself... is debatable. I think yes 01:46
TreyHarris sorry, yes, i meant an instance of
audreyt as it's by default an open class.
so both are mutable
clkao see, i still want a gentle migration plan. starting from using the classes/roles and signatures 01:47
audreyt moosification gets you the first 01:48
clkao ya
audreyt as for the latter... yeah. :)
markstos ?eval @%(a => <b>)<a>
evalbot_12968 Error: Cannot cast into Hash: VRef <Array::Const:0xb6e512ec>
clkao zzzzzzzzzzzzzzzzz
svnbot6 r12971 | markstos++ | refine out optionals on are handled in mmd-draft.txt.
markstos segfault fixed!
my grammar is apparently sucking. 01:49
audreyt :) 01:51
markstos audreyt: I think I should make docs/multi_method_dispatch/ and put the four related docs there, and a README explaining which one is current. 01:52
audreyt markstos: these are all but historical drafts aiming to make it to S12
so should be discarded once it's made into S12 01:53
but sure, please do that
and clarify their status in that README
clkao audreyt: btw env $x is gone right?
audreyt markstos++
clkao: it's now "my $x is context"
clkao right. there are a few tests with that
audreyt thanks to merlyn and uri
clkao really zzz
TreyHarris ok, then, so $obj.clone should walk all attributes, public and private, of $obj, and if !($obj.$attr.META.mutable) assign a clone of it, otherwise just assign it. should '=' (theoretically) already have these semantics? 01:55
svnbot6 r12972 | audreyt++ | * change "env $x" into "my $x is context" as noticed by clkao++. 01:57
r12972 | audreyt++ | note that pugs doesn't handle the latter form yet.
audreyt uhm, you just described deep cloning 01:58
recursively
I thought you want shallow
nothingmuch WHO HAS AWAKENED THE MUMMY OF THE CLONES?
YOU MUST CLONE SHALLOWLY
FOR THOU ART SHALLOW AND LIKETH BRITNEY SPEARS
OBEY OBEY OBEY
audreyt TreyHarris: s/assign a clone of it/assign it/ 01:59
nothingmuch *poof*
TreyHarris audreyt: yes. I was falling into the forgetting-about-what-autoboxing-really-means trap, and was trying to simulate it in Perl 5 :-) 02:01
audreyt :) 02:03
02:04 weinig is now known as weinig|zZz
audreyt I think I need some more napping. bbl... 02:04
*poof*
svnbot6 r12973 | markstos++ | organize and add README explaining the MMD docs status. (will move the new dir into notes/) 02:07
r12974 | markstos++ | move multi_method_dispatch dir into notes. 02:10
02:32 mako132_ joined, Flying joined
svnbot6 r12975 | markstos++ | Add some tests for "L<S12/"Calling Sets of Methods">. 02:43
r12975 | markstos++ | They nearly all fail now.
markstos sleep &
svnbot6 r12976 | audreyt++ | * More segfault avoidance on freebsd with optimized build. 02:53
02:57 nothingmuch joined
svnbot6 r12977 | audreyt++ | * Pugs.Val: Use the Word# casting trick for SKID too. 03:06
03:32 lambdabot joined 03:40 lambdabot joined 04:29 nothingmuch joined 05:33 iblechbot joined 07:45 nwc10 left 08:23 onsen joined 08:25 DaGo joined 08:44 elmex joined 08:58 iblechbot joined 09:01 kane-xs joined 09:26 reZo joined 09:49 gaal joined
nothingmuch morning 10:02
10:03 bernhard joined 10:11 araujo joined
araujo morning 10:21
10:25 larsen joined 10:33 elmex joined 11:15 markstos joined 11:18 ofer0 joined 11:22 LeoNerd joined
LeoNerd Heh.. just checking 11:22
11:22 LeoNerd left 11:37 Revision17 joined 11:44 theorb joined
svnbot6 r12978 | markstos++ | remove bogus example in optionals section of mmd-draft.txt, pointed by Luke Palmer. 11:44
r12979 | markstos++ | [t/blocks/signature_match.t] 11:53
r12979 | markstos++ | Add smart link
12:01 kanru joined 12:04 chris2 joined 12:15 pjcj joined
svnbot6 r12980 | markstos++ | [t/blocks/multi_sub.t t/blocks/param_signature.t t/blocks/signature_matching.t] 12:21
r12980 | markstos++ | Add smart links.
r12981 | markstos++ | Rename t/blocks/signature_matching.t t/blocks/multi_named_vs_pos.t] 12:24
12:24 ludan joined
svnbot6 r12981 | markstos++ | This makes it more easily found with the other multi_* test there. 12:24
ludan ola 12:26
12:28 soisoisoi joined, heng joined
integral Is S5 the spec for perl6 rules? And, is there a perl5 impl of them? 12:35
12:35 job joined
audreyt yes and yes. 12:36
the impl is on CPAN as Pugs::Compiler::Rule
and found in pugs/perl5/ as well
12:36 job left
integral ah, thanks! 12:37
audreyt glad to help :)
12:38 jkva joined
gaal mooses 13:09
audreyt heya gaal :)
audreyt is previewing dons's great fps paper
gaal ooh
audreyt explaning all about the details of the 2.5x speedup lately
gaal is it in preprint? 13:10
audreyt no, private review still
gaal moose 13:11
audreyt from my feedback to dons: 13:23
15:20 <audreyt> bytestring is the only real reason
15:20 <audreyt> that convinced me pugs should not be thrown away as a prototype
15:20 <audreyt> and instead GHC is a good imperative VM in its own right
gaal :) 13:26
audreyt (of course the bootstrap to write the compiler in p6 will still happen; I'm referring to the runtime system :)) 13:27
gaal like fusipugs
audreyt pushion
gaal 6.8 needs a fps literal constructor to replace "" 13:28
also make it available in patmatch
13:29 plisk joined
gaal ah and: can you explain why W#.unsafeCoerce# fixed the segfaults? 13:29
as opposed to just saved some memory?
audreyt sure 13:30
a Word is actually
data Word = W# Word#
here W# is constructor, Word# is the value
so it's a boxed heap object
gaal yupun
audreyt taking two words
one for the constructor tag one for the value
you can't generally cast an incompatible heapobject into that 13:31
gaal ah
audreyt but any heap object is at least one word
so can always be cast into the layout-independent W#
which is just void*
end of explanatation :) 13:32
gaal :)
audreyt I like the new :main in ghci 13:33
13:33 weinig|zZz is now known as weinig
audreyt :main -Iblib6/lib t/foo.t 13:33
xerox :main? :D
audreyt yeah, saves withArgs orother sillyness 13:34
13:34 theorbtwo joined
xerox It calls main with args.. oh nice. 13:34
13:38 weinig is now known as weinig|bbl
svnbot6 r12982 | audreyt++ | * Pugs.Parser: "role A does A" is not allowed anymore. 13:38
r12982 | audreyt++ | This fixes t/xx-uncategorized/self_inheritance.t.
gaal oh nice 13:39
audreyt: whenever convenient, please see 'open questions' on last Sig commit 13:40
(r12960) 13:41
svnbot6 r12983 | audreyt++ | * t/var/var.t: this is no longer allowed:
r12983 | audreyt++ | my $x;
r12983 | audreyt++ | {
r12983 | audreyt++ | $x = 1;
r12983 | audreyt++ | my $x = 2;
r12983 | audreyt++ | }
r12983 | audreyt++ | so don't test for it.
audreyt uhm 13:43
:($moose! is Beautiful is Fair) 13:44
doesn't do what you think it does, I think...
namely, it's not :(Beautiful Fair $moose)
the latter I think translates to :($moose of Beautiful of Fair) 13:46
gaal audreyt: I know 13:47
audreyt which talks about $moose's content, not the alloc
oh ok
gaal it means some other user def aux
audreyt okie
gaal goes into the p_slots table
are 'Fair $moose' and $moose of Fair' entirely equivalent? if so I can trivially add support for 'of'. 13:48
audreyt they are.
gaal my question was where to put 'does' constraints
audreyt and I think it does different things based on whether Fair is role or class.
gaal as well as parametric variables, which need to be stored in the Param but also reported to the constructed Sig
audreyt as re #0
sub f ($x does Moose) 13:49
is actually never canonical
spec only lets you talk about sub f ($x of Moose)
which means "does" iff Moose is role
"does" enters picture when you wantto use a class as a role
in type position 13:50
gaal hm ok
audreyt but I'm not sure it's sane, or going in, or anything.
gaal i'll ignore it then. :)
audreyt good :)
gaal what about ::T then?
it could be either an incoming or outgoing type 13:51
and in some cases it's an error!
audreyt before you ignore it, put in a ocmment that says that :)
(the "does' thing)
13:51 b00t joined
audreyt I think we either admit tyvars in p_types 13:51
gaal eg. :(Dog ::T $x, Cat ::T $y) - error, ::T already bound?
audreyt i.e. extend our Type to admit tyvars 13:52
gaal nod
audreyt or introduce p_tyvars
13:52 wilx joined
gaal okay. I think we need the latter, since ruleParam now needs an incoming tyvar parameter 13:53
audreyt that depends on how unification is done
gaal er, that's actually unrelated 13:54
audreyt I think latter is saner
::T and ::T may not be error
it maybe a requestto unify
i.e. find the common T such...
gaal ouch
this is teh intricate
audreyt depends on how much left bias we want 13:55
I think p_tyvars allows flexibility at that point
gaal flexibility against future spec? 13:56
audreyt has long ago decided not to think about tyvar until Callconv, Objmodel and Grammar is done
yes.
13:56 hermax_ joined
gaal well, I'm happy with not even parsing this for this release 13:57
audreyt as am I
gaal just need to fix a small bug in requiring an optionality hint, plus implement named params
and then it's at compatible level to oldexp parser 13:58
audreyt niiiice :) 13:59
13:59 lisppaste3 joined
audreyt has started the long journey of bottom-to-up triaging 14:00
gaal wonders if he should give a "haskell for beginners" talk in OSDC::Il
svnbot6 r12984 | audreyt++ | * s/try/do/ in t/var/type.t now we parses "my Int $f"
xerox nods
audreyt please do! :) 14:01
you can use ziggy's material too
just make sure to pull the IO chapters from the last to first
and use bytestrings :)
gaal I don't know if: I know enough, there's enough interest, and if audreyt isn't crazy :) 14:02
xerox Anybody knows how to do interpolation of values in a string with io:format in Erlang? I know it's a strange question =P
gaal lol
audreyt I've just read TypEr paper that does inferencing for Erlang... great stuff
gaal audreyt: use bytestrings, suuure, why not explain type Eval =
audreyt gaal: seriously, I wish there's a MinHs in style of MinCaml 14:03
it's by far the best compiler introductory (1st year university students)
that I've seen in any language
gaal don't know MinCaml, but have you tried Helium?
audreyt min-caml.sourceforge.net/index-e.html
lambdabot Title: A Crash Course for the MinCaml Compiler
gaal specialcased friendly error messages
audreyt sure but MinCaml is a 2kloc implementation of ML in ML 14:04
gaal audreyt: seriously, I wish there were a mini Perl
audreyt that compiles code that is faster than GCC :)
gaal !
audreyt and it touches all parts of the compiler chain
marcus_ boring sunday
audreyt from parsing down to register allocation
and three intermediate languages
fascinating, no?
gaal my moose
gaal is reminded of graydon's talk, where he mentioned ocaml came with great tools 14:05
14:06 nothingmuch joined
gaal # www.venge.net/graydon/talks/mkc/html/ 14:06
lambdabot Title: MagicPoint presentation foils
audreyt yeah. Hs should be comparable on loc
if not almost identical
svnbot6 r12985 | audreyt++ | * add MinCaml to READTHEM
audreyt but "faster than GCC in 2kloc" is such an alluring strategy. 14:07
it explains let-reduction, lambda-lifting, constant folding, dead code elimination, type-inferencing
register spilling, register targetting/allocation, VM and assembly 14:08
which are admittedly somewhat FP specific, but a lot of the concepts is reusable here as well
gaal I'll definitely look into this 14:09
audreyt adapt it into a OSDC.il talk would befun.
gaal not sure my audience will agree
audreyt mmmmm 14:10
ok, maybe not for a 45min talk...
gaal contemplates a Moose monad 14:13
xerox o_0 14:15
14:20 nothingmuch joined
audreyt Moose is also monoid 14:20
Moose `mappend` Moose is still Moose
xerox What's the mempty :: Moose? :) 14:21
14:22 araujo joined
audreyt Moose :) 14:24
nothingmuch clkao: BOY!?!?
audreyt data Moose a = Moose
nothingmuch nothingmuch.woobling.org/MO/ is now purely functional 14:25
lambdabot Title: Index of /MO
nothingmuch all memoizations removed
audreyt wnice 14:26
wolverian someone is lagging... :)
audreyt err, sorry :)
nothingmuch: any chance of Hsification? :)
nothingmuch audreyt: that's what I'm planning on doing soon
hence the changes
audreyt yay
nothingmuch i need to do MI slot allocation
and i need to stop using hashes
and use set::object
audreyt 'k
nothingmuch and add name-based constraints somewhere else 14:27
however, i'm still in the exploratory stage
i don't know precisely what it's going to be, so hsification is perhaps premature
audreyt nodnod
nothingmuch i think in ca. 2 days we should have something
anymoose, where's that clkao... he needs a present
svnbot6 r12986 | audreyt++ | * Temporarily parse "my $x is context" by assuming that 14:46
r12986 | audreyt++ | "env $x" was seen, although the latter is no longe canonical.
r12986 | audreyt++ | The proper fix is to admit "is context" in the new Param structure.
r12987 | audreyt++ | * Pugs.Val.Code: add slot for "is context".
14:47 xinming joined
xinming TimToady: ping... 14:47
:-)
gaal so, I'm working on this network component, and am looking at the way it handles network errors. 14:49
for some strange reason, the firewall I've been using to simulate chopping the network connection doesn't trigger the same error case as actually pulling the plug
avar What's the status of the Perl6 Perl6 parser?
gaal so I'm finding myself pulling the (eth) plug a lot
now, here's the thing:
if I pull it just enough to trigger the applicative error, and plug myself back quickly, all's well 14:50
if I leave the cable disconnected for about a minute, the machine reboots
the first time it happened, I was just touching the tip of the rj jack, so of course I was thinking some freak electrical thing had occured 14:51
14:52 Limbic_Region joined
gaal decides to leave all switches in the "more magic" position 14:52
Limbic_Region gaal - that's the problem with magic switches 14:53
switching between levels of magics has side effects
14:54 lectus joined 15:05 justatheory joined
xinming seen TimToady 15:07
?? It seems seenbot is away. :-/
integral xinming: you can use SeenServ: /msg seenserv seen timtoady 15:08
oh, well not quite, doesn't do last spoken times. *sigh*
xinming >_< 15:10
Limbic_Region ?seen TimToady
lambdabot TimToady is in #perl6. I don't know when TimToady last spoke.
Limbic_Region anyone built recently see a weird output o Parser.hs???? 15:11
xinming integral: hmm Ok, I want someone to make a English name for me. anyone here would help? :-P
[particle] how about larry? :) 15:12
xinming hmm, Can I have more? :-P 15:13
Limbic_Region xinming - are you looking for an approximate representation of your name in english or
are you looking for something with a specific meaning
something that reflects your personality
etc
choosing a name isnt something one should do lightly IMO
and if you weren't aware, there are many "baby name" websites that list names, how popular they are, and what their meaning and origin is 15:14
xinming Limbic_Region: approximate representation is ok, and for my personality, I want to be a very good person. :-)
where the url is plz?
Limbic_Region the indicates one - there are dozens if not hundreds 15:15
just google for baby name
xinming Limbic_Region: thanks
Limbic_Region do you happen to know the origin and/or meaning of your current name?
audreyt Limbic_Region: weird output? 15:16
xinming Limbic_Region: yes, Xin means trust, and believable. and Ming, means clear(in mind), and knowing much.
Oh... audreyt, Your Chinese is good, could you please give me an English name? :-) Because I think You may choose a real good name for me. :-) 15:17
audreyt I think I prefer xinming :) 15:18
Limbic_Region audreyt - yeah, only now I closed the window so I will have to do it again
it finished compiling fwiw
audreyt - I expected you to be sleeping. Is tomorrow a $work day? 15:19
xinming audreyt: But the problem is, It can't be used as an English name, I'm in a Company, and they ask me to make a English name. I don't really want to change my English name in the future.
audreyt Limbic_Region: it's not, but you're right, Ishould sleep, not triage
xinming hmm, I think "Larry Lai" is Ok. But the problem is, I don't know if it might become offensive. :-)
Limbic_Region well, if you triage - do it in silence (IOW off channel so you don't get sucked into other things) 15:20
audreyt it's a pretty good name.
Limbic_Region xander is pronounced zander in english fwiw xinming - so there are several english names beginning with an x
though it is uncommon 15:21
[particle] xavier is more common
Limbic_Region right particle - unless you are a BTVS fan
audreyt - stick around long enough for me to nopaste the weird output though
audreyt sure
Limbic_Region re-running now 15:22
svnbot6 r12988 | kudra++ | This week's summary 15:24
15:24 hermax_ joined
Limbic_Region xinming - come to think of it, there might even be a site to convert non-english names to english ones since it happens all the tie 15:26
time
preparing to nopaste 15:27
xinming Limbic_Region: thanks, I'm reading baby names site. :-)
hmm, I really don't know how audreyt find this name... :-/ really good
Limbic_Region audreyt - not just on parser.hs, several produce this weird output 15:28
pasteling "Limbic_Region" at 24.35.57.240 pasted "Weird output when building" (80 lines, 4.3K) at sial.org/pbot/19441 15:29
Limbic_Region xinming - audreyt may have been lucky
looking for female names beginning the the same couple letters
au
wouldn't have produced that many choices
she liked one and went with it
not that it actually happened that way, but it is plausible
audreyt - I believe the output in Parser.hs is the same as nopasted above 15:30
xinming Oh, the name audrey still can be found in baby names. :-) thanks
Limbic_Region nopasting anyway just in case 15:31
audreyt it actually happened that way :)
xinming I'll also hunt my baby's name this night... :-P
pasteling "Limbic_Region" at 24.35.57.240 pasted "More weird output while building" (72 lines, 3.4K) at sial.org/pbot/19442 15:32
Limbic_Region xinming - and if the meaning is important - some of the sites allow you to search that way. I think they may not be free though
[particle] xinming: here's a really cool name visualizer -- babynamewizard.com/namevoyager/lnv0105.html
lambdabot Title: The Baby Name Wizard: NameVoyager, tinyurl.com/3ln7n
[particle] it shows popularity over the last 125 years or so 15:33
Limbic_Region I had to scrape a lot of geneology, baby name, and census websites for a project a while back
audreyt - AFAICT, those are the only two producing that weird output 15:34
svnbot6 r12989 | audreyt++ | * Allow symbolic evaluation of qualified types.
r12989 | audreyt++ | ::('X::B')
r12990 | audreyt++ | * Fix a warning due to the new isContext slot,
r12990 | audreyt++ | as noticed by Limbic_Region++
Limbic_Region and the build finishes and no weird output when running
audreyt - is the ugly hack still in place or did you miraculously find some time to investigate Cabal and/or setup.exe? 15:35
audreyt bth are fixed
no, ENOTIME. maybe tomorrow, but triage takes prec
(and changelogging too, but I was hoping for some help :))
[particle] which ghc do i need now? 15:36
audreyt 6.4.1 or above
Limbic_Region audreyt - I tried to help, I really did
audreyt not changed in this release
svnbot6 r12991 | audreyt++ | * fix the init warning in Pugs.Parser too.
Limbic_Region unfortunately those that updated the changelog didn't bother to indicate what commits went with what comments
or even where the last accumulative rev left off
audreyt I understand 15:37
[particle]: on win32, last known good build is 0819 if you want to try with GHC 6.6, though GHC 6.4.2 will build pugs fine
Limbic_Region I know with this project I shouldn't be afraid to screw things up
but...
particle - if you want to be a brave soul and go with GHC 6.6, I can help there 15:38
audreyt *nod* note you can use "svn log ChangeLog" to see where markstos injected the changes
Limbic_Region though 6.5 from the 19th works out of the box
audreyt but I need to sleep now :)
see you tomorrow!
Limbic_Region sleep well
15:42 marmic joined
gaal xinming: "Earnest" maybe? 15:43
Limbic_Region . o O ( the importance of being? )
[particle] 'abe' can evoke the same imagery :) 15:44
15:44 justatheory joined
gaal Limbic_Region: it sorta fits with the literal meaning of the original name 15:47
svnbot6 r12992 | kudra++ | A quote was missing
audreyt or "Ernesto"
xinming gaal: Larry Lai.... :-) Just hope that I'll be as good as larry wall. :-) 15:48
audreyt "Ernesto Lai" sounds rather nice
and immediately summons the image of an socialanarcho activitist ;) 15:49
nothingmuch @seen clkao
lambdabot clkao is in #perl6. I don't know when clkao last spoke.
gaal fnies for the pords
Limbic_Region all better audreyt
xinming audreyt: What does Ernesto mean? 15:51
gaal ..and starts moving home
I believe "Ernesto" is the Italian equivalent of "earnest"
Limbic_Region me too
gaal bbiab&
audreyt also Spanish, probably 15:52
as in Ernesto Guevara de la Serna :)
15:54 elmex_ joined
Limbic_Region wanders off for the day 15:56
TTFN all
[particle] is it che lai in here, or is it just me? 15:59
16:02 weinig|bbl is now known as weinig
xinming [particle]: what does che lai mean? :-/ 16:04
16:17 Psyche^ joined 16:29 Psyche^ is now known as Patterner, mauke joined 16:31 BooK__ joined, BooK__ left
svnbot6 r12993 | book++ | typo 16:31
r12994 | audreyt++ | * More test triaging... 16:40
gaal I don't understand the treatment of unpacking in Subroutine.pod:1222
my Dog :($fido, $spot) := twodogs(); # one twodog object
the whole section had dealt with sub signatures, now this is a variable declaration 16:41
but one that actually only declares the patmatched inner vars
svnbot6 r12995 | audreyt++ | * Parse for slurpy :(*@x) in Signature literals; not yet
r12995 | audreyt++ | reflected into the real Sig structure, but good enough
r12995 | audreyt++ | to make siglist.t (which btw is getting moved) not fail.
gaal that's fine, except (a) looks to me like it should be a different section 16:42
and (b) the syntax is bizzare -- ':($fido, $spot)' elsewhere means something completely different
also:
my Dog $ ($fido, $spot) := twodogs(); # one twodog object
what is this $ <ws> (...) thing? 16:43
also also, there are literal tabs there :(
audreyt declarator takes Param
or Sig in parens
gaal other than that, I can implement unpacking in the sig parser :)
audreyt vardecl share syntax with paramdecl 16:44
entirely
gaal well, that's a fine unification, but it's sort of not indicated in the text, which just flows associatively from talking about subs to talking about vars.
also, I still don't understand 'Dog $ ($fido, $spot)' 16:45
what is this empty $ thing?
ah, that's the disambiguator mentioned above.
it's like haskell '' in (x,y)
as opposed to 'n' in 'n@(x,y)' 16:46
audreyt rofl.
gaal why don't we write a Haskell emitter? Perl 6 == Haskell 16:47
audreyt TimToady might have been overpessimizing here.
my Dog ($x, $y)
is perhaps better written as
gaal audreyt is a lazy sleeper
audreyt my (Dog $x, Dog $y)
but I can see the redundant typing
problem is 16:48
my Dog (Cat $x)
really doesn't mean much
except maybe we special case it to say that declarator followed by type names
distributes those type names in the signature list that follows.
gaal my (Dog ::T $x, ::T $y) # groan
audreyt in which case it needs to be said as such...
gaal: deconstructing binds goes way back 16:49
before either perl6 or haskell :)
svnbot6 r12996 | audreyt++ | * move t/unspecced/siglist.t to t/syntax/signature.t 16:50
r12996 | audreyt++ | as it's (thank gawd) no longer unspecced.
gaal Miranda? ML?
audreyt ML prolly
gaal ML++ thne
audreyt 1970s technology
gaal 1970s++, hella great music 16:51
um okay, about order. how sensitive are params to the order of:
auxillaries, where-{}, unpackings 16:52
it's of course easier to implement parsing this if the order is rigid
also, in full sig-style unpacking, why was () used and not :()? 16:53
the latter is longer but would have been more intuitive (I think)
audreyt it can be 16:54
()is mere abbrev
You may omit the top variable if you prefix the parentheses with a colon 16:55
to indicate a signature.
the intro text is very backwards though.
gaal well! that does not say that w/o the colon is just an abbreviation
audreyt I concur
gaal and it doesn't guarantee that you can always put the colon
audreyt how about you reorder/refactor/rewrite the entire section and send to p6l :)
audreyt agrees it looks very confusing 16:56
gaal yeah, I'll do that.
audreyt so, re order.
gaal is there another place where the param<->vardecl equiantlerhood _is_ discussed?
audreyt I _think_ where/unpack/trait is unordered.
but you can certainly parse it ordered first...
gaal and freely intermixed? 16:57
that's okay, it just means we need a classifier
audreyt yes, S03 declarator
Variable declarators such as C<my> now take a I<signature> as their
argument. (The syntax of function signatures is described more fully in S06.)
The parentheses around the signature may be omitted for a
simple declaration that declares a single variable, along with its
associated type and traits. Parentheses must always be used when
declaring multiple parameters:
etc.
also note
sub foo :($a,$b) {...} # okay
gaal data ParamPostMoose = Aux .. | Unpack Sig | Constraint Code 16:58
hmm ok, but some sigs clearly don't make sense in vardecl
my $x?
audreyt why not? 17:00
gaal what does that mean?
as opposed to my $x! ? 17:01
audreyt sub f { return() }; my $x? := f();
would work, while
my $x! := f()
would fail
the unification of binding vs callconv is complete, you see :) 17:02
gaal whoa.
audreyt it's probably the most far-reaching change in the YAPC::Tokyo Protocol :) 17:03
gaal *applause*
audreyt btw I just committed to S03
+Types occuring between the declarator and the signature are distributed into
+each variable:
+
+ my Dog ($b, $c);
+ my (Dog $b, Dog $c); # same thing
+
gaal well, if that's a declarator-specific amenity there should be a note saying so 17:04
ie "Differences between param decl and signatures, although we said they're equivalent"
:)
audreyt thing is, in signature literals 17:05
there's nowhere to hang that :)
gaal sure, since s03 is about vars and s06 is about subs :)
audreyt *nod* 17:06
also note that you can do
sub f ($x is context) { ... }
my $x is copy := ... 17:07
which follows quite easily from the unification
gaal notes one thing you can't do is n+k patterns, and isn't seen complaining just yet 17:08
audreyt sub f (1+$x) { ... }
gaal suuure
wolverian please don't. :)
audreyt if we do that, we might as well do "$x is free".
and then unify using backtracking and introduce first-class end goals.
gaal $x is up(grabs) 17:09
audreyt reading Curry conference proceedings is a dangerous way to fall asleep...
obra heh
bad dreasms?
audreyt mad dreams, most likely
(Curry is Haskell extended to express Prolog) 17:10
gaal a bad dreasms is when you can't fall asleep because your lover keeps texting you dirty messages?
audreyt gaal++
bbl tomorrow :) 17:11
gaal sleep audreyt `seq` goodMorning audreyty 17:12
nothingmuch @pl sleep audreyt `seq` goodMorning audreyty 17:14
lambdabot sleep audreyt `seq` goodMorning audreyty
gaal being strict about audreyt's sleep schedule is pointless 17:15
nothingmuch @hg a -> b -> c -> ( b a , c a )
lambdabot Maybe you meant: . bf ghc id msg pl v wn
nothingmuch heh
gaal but, nm, you mean '@hoogle' 17:16
nothingmuch @hoogle a -> b -> c -> ( b a , c a ) 17:17
lambdabot No matches, try a more general search
gaal I don't see how that can be a valid type though
nothingmuch yes, i'm stupid
@hoogle a -> (a -> b) -> ( a -> c ) -> ( b, c )
lambdabot No matches, try a more general search
nothingmuch @pl foo audreyt = sleep audreyt `seq` goodMorning audreyt 17:18
lambdabot foo = liftM2 seq sleep goodMorning
nothingmuch ah
gaal heh
nothingmuch that's what i was trying to do
17:18 jkva joined
gaal even \bot sings audreyt lullabies 17:19
nothingmuch @t liftM2
lambdabot Maybe you meant: tell time tiny-url todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . v
nothingmuch @type liftM2
lambdabot forall r (m :: * -> *) a2 a1. (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
nothingmuch i don't grok that at *all* 17:20
gaal nothingmuch:
liftM2 f x y = do 17:21
xv <- x
yv <- y
return f xv yv
nothingmuch ah
gaal er, return $ ...
nothingmuch yep
mauke @pl \x -> f x `c` g x 17:22
lambdabot liftM2 c f g
mauke oh god, the function monad
gaal !grok
mauke: we actually generate liftMn functions for various values of n, up to 12 I think :-) 17:23
nothingmuch why did lambdabot decide that `seq` was mondaic in this case? it already knows it?
gaal because the standard libs come with up to liftM5
17:24 Aankhen`` joined
gaal nothingmuch: I don't rightly know! but there is much to be studied in the plugin dir 17:24
nothingmuch shies away
meta model stuff is getting priority time slices
xerox lambdabot decided what? 17:25
gaal yeah, and i should get back to Syn editing and then parsing unpacking sigs!
hm, mauke's @pl shows perhaps it didn't?
nothingmuch gaal++
gaal: yes, that's why i asked
gaal bbiab :)
xerox nothingmuch: it uses the ((->) a) monad, aka Reader. 17:26
nothingmuch ah
xerox nothingmuch: it doesn't mean that the code is monadic in the IO sense.
nothingmuch i know of other monads
but the notion that liftm2 is sequential
in that there is a binding 17:27
xerox ?type liftM2
lambdabot forall r (m :: * -> *) a2 a1. (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
nothingmuch whereas f x `c` g x is not necessarily so is peculiar
xerox Expanded for m = (e ->) becomes: (a -> b -> c) -> (e -> a) -> (e -> b) -> (e -> c).
@djinn (a -> b -> c) -> (e -> a) -> (e -> b) -> (e -> c). 17:28
lambdabot Cannot parse command
xerox @djinn (a -> b -> c) -> (e -> a) -> (e -> b) -> (e -> c)
lambdabot f a b c d = a (b d) (c d)
xerox @. pl djinn (a -> b -> c) -> (e -> a) -> (e -> b) -> (e -> c)
lambdabot f = liftM2
xerox :D
nothingmuch so how is the reader monad implied?
@i
lambdabot Maybe you meant: id index instances instances-importing . v
xerox As soon as you pass a function as the second and third argument, you're done.
nothingmuch @instances ((->) a)
?
lambdabot Not a class! Perhaps you need to import the module that defines it? Try @help instances-importing.
xerox ?type \f -> liftM2 f (+1) 17:29
lambdabot forall a2 r a. (Num a) => (a -> a2 -> r) -> (a -> a2) -> a -> r
xerox Ta-da.
nothingmuch brb
xerox @instances Monad
lambdabot ((->) r), ArrowMonad a, Cont r, ContT r m, Either e, ErrorT e m, IO, Maybe, RWS r w s, RWST r w s m, Reader r, ReaderT r m, ST s, State s, StateT s m, Writer w, WriterT w m, []
xerox ?type \f -> liftM2 f (undefined :: IO a) 17:30
lambdabot forall a2 r a. (a -> a2 -> r) -> IO a2 -> IO r
17:37 mako132_ joined 17:43 mako132_ joined, ruz joined 17:58 DaGo joined 18:08 khisanth_ joined 18:10 khisanth_ is now known as Khisanth
gaal English is hard, let's go shopping 18:11
(p6-l query up)
18:14 traecer left 18:20 axarob joined, axarob left 18:22 salty-horse joined 18:40 jkva left
salty-horse are parameter types implemented yet? 18:53
gaal salty-horse: not yet, working on it. 18:54
salty-horse is anything in the repository yet? source I can look at? 18:55
gaal the groundwork is parsing signatures into newVal objects: 18:56
?eval :(Moose $x)
18:56 evalbot_12968 is now known as evalbot_12996
evalbot_12996 CCall "perl" CaptMeth {c_invocant = VPure (SigSubSingle {s_requiredPositionalCount = 1, s_requiredNames = {"x"}, s_positionalList = [MkParam {p_variable = "$x", p_types = [(mkType "Moose")], p_constraints = [], p_unpacking = Nothing, p_default = <Param.Default>, p_label = "x", p_slots = {}, p_hasAccess = AccessRO, p_isRef = False, p_isContext = False, p_isLazy = False}], s_namedSet = {}, s_slurpyScalarList = [], s_slurpyArray = Nothing, s_slurpyHas 18:56
gaal ignore the CCall for now, look at SigSubSingle: 18:57
salty-horse i'm trying to avert my eyes
gaal there is one Param in the positional list, and the p_types field is just "mkType 'Moose'" 18:58
this looks better prettier-printed :)
TreyHarris gaal: *clap* I like it
gaal (btw, see that p_unpacking = Nothing? give me ten minutes :)
so, there are various subparsers that already work, for example arbitrary auxillaries: 18:59
?eval :($x is rw is ref is illegible) 19:00
evalbot_12996 Error: unexpected "i" expecting comment, "," or ")"
gaal heh, hasn't updated
?eval :($x! is rw is ref is illegible)
evalbot_12996 CCall "perl" CaptMeth {c_invocant = VPure (SigSubSingle {s_requiredPositionalCount = 1, s_requiredNames = {"x"}, s_positionalList = [MkParam {p_variable = "$x", p_types = [], p_constraints = [], p_unpacking = Nothing, p_default = <Param.Default>, p_label = "x", p_slots = {"illegible":=VPure (MkBit True)}, p_hasAccess = AccessRW, p_isRef = True, p_isContext = False, p_isLazy = False}], s_namedSet = {}, s_slurpyScalarList = [], s_slurpyArray = Nothin
TreyHarris gaal: I may be blind, but I've stared at evalbot's output for a bit and I can't see where the first two {'s terminate, and it looks like "False}]" terminates a { that doesn't exist within the []
gaal TreyHarris: copy to vim and 'setf haskell' :)
(and thanks! :) 19:01
TreyHarris heh, ok
gaal salty-horse: so, what I was asking audreyt earlier was where the ::T in 'Dog ::T $fido' goes
and the answer is that probably Pugs.Val.Code.Param needs a p_tyvar field 19:02
salty-horse: please add it :)
got a commit bit?
salty-horse yes. but i want to try and understand all this first :) 19:03
i am very new to haskell, and understand very little of pugs internals :/ 19:04
gaal it's much easier to start by looking at src/Pugs/Val/Code.hs
of if you want the big picture of our new AST, src/Pugs/AST/CapInternals.hs
19:05 weinig is now known as weinig|bbl
salty-horse what does ":(Expression)" mean in the pugs prompt? I can't find it in :h (newbie question) 19:06
gaal CapInternals.hs is compilable, but doesn't reallt run yet. we're picking out parts of it and vivifying them into the old runcore, gradually
ah, :($x) is a Signature constructor
doesn't have anything to do with the prompt
just an unfortunate coincidence 19:07
19:07 markstos joined
gaal audreyt mentioned en passant what's the best way to explain this: 19:07
consider:
sub make_car ($model, $doors? = 4, $color? = 'black') { ... } 19:08
that's actually:
sub make_car :($model, $doors? = 4, $color? = 'black') { ... }
that is, this signature is a first-class object. and I can do
my $sig = :($model, $doors? = 4, $color? = 'black') 19:09
or presumably something like &make_car.signature
and the introspection goes from there.
TreyHarris would sub make_car $sig { ... } be valid?
assuming $sig was set in a BEGIN block or otherwise in time? 19:10
gaal not sure - not sure how much sense it makes. (because, what's the body?)
if it's a literal ..., maybe
TreyHarris ok, so i slept on it and I think I've got a working idea of how shallow cloning and 'is clone' should work. But it requires two things that aren't in the synopses (yet): 19:13
1) right now 'has @.foo = 1..3' and 'has $.foo = 1..3' do precisely the same things, and elsewhere in the class you can refer to the attribute declared either way as "$.foo" or "@.foo"--it just imposes a different context if it matters in use. I think that it also makes a difference in cloning: 19:14
has @.foo = 1..3; # $obj.clone will get a new array
has $.foo = 1..3; # $obj.clone will get the same array
19:14 Aankh|Clone joined
salty-horse gaal, how do you suggest pretty-printing the pugs command line's output? 19:15
gaal you mean in evalbot? I don't :(
but that particular one, with the haskell dump?
./pugs -e ':(Moo $x).yaml.say' 19:16
salty-horse the haskell dump.
TreyHarris 2) there needs to be a specifier for (private-only?) attributes that make no sense to be shared among clones. for example, "has %!private_instance_cache is reallyprivate". those attributes shouldn't be assigned to the clone, but should be cloned in the clone. i don't know what the right word for it is, obviously not 'reallyprivate' :-)
gaal ah actually no, that won't work :(
so just copy it to vim, turn on syntax hilighting, and... good luck :) 19:17
TreyHarris: not responding since I don't know about this stuff, I'm not ignoring you :)
TreyHarris well, i was hoping nothingmuch was back, he said 'brb' 100 minutes ago or so :-) 19:18
gaal he meant bwb # be wrong back
aw, that was awful, sorry
TreyHarris lol
gaal it's a little known fact that 'bbl' means be back left 19:19
ok I'd better stop
salty-horse be blatantly late 19:21
TreyHarris gaal: however, seeing whether my intuition is right would be helped if i could prototype some code, and your recent diffs look like they're moving in that direction. will user-defined param traits be implementable soon?
nothingmuch TreyHarris: i am
svnbot6 r12997 | gaal++ | * fix hintless required params, so this works again: 19:22
gaal you mean actually callable ones? hmm, why not, go ahead and hack them in :)
svnbot6 r12997 | gaal++ | :($x is rw)
nothingmuch gaal: yes, while you're in the wabe
gaal gyres
gaal gimbles
nothingmuch =) 19:23
TreyHarris gaal: my haskell-fu is still somewhere between nil and nonexistant. i meant being able to write 'roll clone { multi sub trait_auxiliary:is(clone $trait, Any $container, &block?) {... } }" and have it actually work 19:24
s/roll/role
nothingmuch it's not nil, it's Nothing
that's the first step ;-)
gaal yes, because at least that's Maybe
Haskell is an optimistic language. 19:25
TreyHarris nothingmuch: anyway, look in your scrollback at my comments starting at :13 after this hour. does that seem sane to you?
19:25 perlbot joined
gaal argh how do I get a PureSig from a wrapped Val? 19:25
I don't wanna import VPure :( 19:26
nothingmuch TreyHarris: yes, 5'0 f6r 5t
clone should be in the same domain as ===
wheras copy is more like eqv
and must be user code
i think
clone should be there for the moral equivalent of bless { %$obj }; 19:27
and not for high level duplication
for that we need an optional user role
TreyHarris is still trying to figure out "5'0 f6r 5t" 19:29
nothingmuch that was my keyboard getting messed up 19:30
i think it was my numlock key
i couldn't type for a short while
but the numlock was off
i toggled it anyway
and it went back to normal
TreyHarris ah, ok. so is there actually a distinction between 'is copy' and 'is clone'? for value (~~ non mutable) types, 'is copy' performs the useful service of letting you do mutating methods against them (which produce a new object). but for non-value (~~ mutable) types, it doesn't do anything but let you do anything beyond the default 'is ro', except to reassign the param another object, which seems like a rather unusual need. so maybe 'is clone' doesn't exist 19:35
whoops, i'm sure that got cut off. but where? one of these days I have to figure out how to make irssi not let me type more than the server allows 19:36
gaal 'but where' - see irc.pugscode.org 19:43
'figure out how to' 19:44
nothingmuch TreyHarris: i think maybe 'is copy' is for value types
is clone is for value types + 1 layer
19:44 Trey2 joined
nothingmuch i was being confusing, i think 19:44
TreyHarris ah, ok. so is there actually a distinction between 'is copy' and 'is clone'? for value (~~ non mutable) types, 'is copy' performs the useful service of letting you do mutating methods against them (which produce a new object). but for non-value (~~ mutable) types, it doesn't do anything but let you do anything beyond the default 'is ro', except to reassign the param another object, which seems like a rather unusual need. so maybe 'is clone' doesn't ...
... exist, and 'is copy' always clones (falling back for efficiency's sake to plain old cow semantics when the param is of a value type)?
nothingmuch i think not 19:45
the distinction is... unnecessary
nothingmuch ponders
intuitively:
copy means you can ruin it without worry
clone means it's another one of those
TreyHarris yay irssi+perl. (that ... ... but was done automatically)
nothingmuch yes
there's a script for that =) 19:46
TreyHarris oh. lol
nothingmuch i forget what it's called
irssi++
anymoose
wolverian splitlong
nothingmuch i'm not sure what my spider sense is telling me
it's saying "maybe copy is a deep clone"
but it's also saying "no no, deep clones should *always* be defined by the actual class - they can't be automated" 19:47
TreyHarris right, because deep clones can easily cause infinite recursion
nothingmuch not only that 19:48
TreyHarris without help as to the semantics of what an attribute containing another instance of your class might mean
nothingmuch we tend to have a notion of "attached" objects in non purely functional languages
objects which manage (or don't manage) their own registration in a parent object of some sort
it's a simple way to get this stuff done easily 19:49
wheras in haskell you need to use something like thezipper
or do everything from the parent
when you clone this way 19:50
and it's a deep clone
19:50 weinig|bbl is now known as weinig, Limbic_Region joined
nothingmuch then you clone the entire hierarchy 19:50
when you usually mean "clone and return a detached copy"
or "clone and attach to the parent with a different key"
or something of the sort
this is where cloning becomes strictly a high level operation
and there's no way to do this sanely
19:51 weinig is now known as weinig|food
TreyHarris yes, but i'm just talking about what the Any::clone method should do. i suspect, as always, most perl programmers will not implement a Cloneable role or override .clone, so .clone should do something a little bit more--but as little more as is sanely possible--than plain shallow cloning 19:51
nothingmuch well 19:52
that's exactly my point... they should be separate 19:53
you shouldn't override clone
clone should simply have a usable meaning
if you want to a Clonable role
then the api is probably going to let clone take an argument which says how it should be cloned
Storable::dclone is also useful though
for when you *do* want *every* related object to be duplicated
i'm thinking .clone is always shallow 19:54
and .copy is always dclone
and something in the middle
a user method
is a "real" clone
TreyHarris well, let me give an example. say we have "class Point { has $.x, has $.y }". it would be very natural to write "my $sameHeight = $p but { .x = 0 }". assuming but clones, this works fine. 19:56
salty-horse ?eval :(dog $fido = 3)
19:56 evalbot_12996 is now known as evalbot_12997
evalbot_12997 Error: unexpected "=" expecting comment, trait, "," or ")" 19:56
salty-horse ?eval :(dog $fido= 3)
evalbot_12997 CCall "perl" CaptMeth {c_invocant = VPure (SigSubSingle {s_requiredPositionalCount = 0, s_requiredNames = {}, s_positionalList = [MkParam {p_variable = "$fido", p_types = [(mkType "dog")], p_constraints = [], p_unpacking = Nothing, p_default = <Param.Default>, p_label = "fido", p_slots = {}, p_hasAccess = AccessRO, p_isRef = False, p_isContext = False, p_isLazy = False}], s_namedSet = {}, s_slurpyScalarList = [], s_slurpyArray = Nothing, s_slurpyHa
gaal salty-horse: will fix 19:57
salty-horse salty-horse will fix?
TreyHarris but then it gets reimplemented as "class Point { has SpaceLocator $.coord; method x { ... } method y { ... } }". now that same but code is going to cause $p to be modified, because x no refers indirectly to $.coord, which is an object.
gaal you're welcome to, but I meant I'll fix :)
TreyHarris s/x no refers/.x now refers/
nothingmuch TreyHarris: preecisely 19:58
that's the issue with .clone
the only use it has is as a convenience methods
method
when you can be reasonably sure of the semantics of the instance structure
however 19:59
let's for a minute assume that we can know whether or not a value is mutable by means of introspection
TreyHarris audreyt says it will be via ?(.META.mutable) 20:00
nothingmuch okay 20:01
.clone need never both copying mutables, right?
1.clone is a noop;
since e.g. ++ is a container method
you can't say 1++
wolverian you meant immutables right?
nothingmuch err
yes
sorry, kind of distracted 20:02
TreyHarris um noooooo, i think not. i think 1.clone is equivalent to Int.new(1)
because "0 but True" should not change the truth of 0 from then on
nothingmuch it can't change
0 but True doesn't actually change 0 20:03
it wraps it in something that overrides truth
TreyHarris right, it changes a clone of 0
nothingmuch and delegates everything else
TreyHarris right
nothingmuch my understanding is that immutables never change at all
and thus there is no point in cloning them ;-)
anymoose 20:04
TreyHarris right. there's a switch somewhere that causes different behavior based on $obj.META.mutable. it can be in clone, or it can be in but, but it has to be somewhere.
this is what i've been cogitating on
nothingmuch by this rationale cloning only makes sense if $x !=== $x.clone is always true
your fine line is in @.x etc 20:05
@x === @y;
lambdabot Maybe you meant: . v
nothingmuch heh
TreyHarris lambdabot: no, he didn't. ;-)
nothingmuch wait, let me read a small bit
okay 20:06
@x.clone !=== @y.clone
lambdabot Unknown command, try @list
nothingmuch aghg
i'm really confused
@x.clone !=== @x;
lambdabot Unknown command, try @list
nothingmuch because you can edit @x.clone.[1] without altering @x
TreyHarris but @x.clone eqv @x? 20:07
nothingmuch yes
we are in agreement that @x.clone.[1] === @x[1] right
5?
TreyHarris yes
nothingmuch okay
20:07 Aankh|Clone is now known as Aankhen``
nothingmuch my conjecture is that what we are searching for 20:08
is to declare $.coord as a "part" of the point
so that it's ===
and it'll be cloned too
TreyHarris yes. i was thinking "has SpaceLocator $.coord is value"
nothingmuch yes
okies
why did i miss that =/ 20:09
i spent 15 minutes beating around the bush and juggling two conversations to restate something you already knew
TreyHarris no, it's helpful
nothingmuch anymoose, we already have 'is value'
is ro
i think
it basically says that you can never change $.coord
within the point object 20:10
$point.coord = foo never works
it's more like an organizational layout
likewise $foo = $point.coord;
$foo.x = 1;
doesn't change $point.coord.x
maybe that's the diff between is ro and is value? 20:12
TreyHarris from outside the class, yes
nothingmuch also, can you is value anything
is it recursive?
TreyHarris but inside the class, you can alter coord
nothingmuch if it's deep then $point.coord.x = 1;
can't really work
hmm 20:13
or maybe it can =/
$foo = $point.coord;
$foo !=== $point.coord; # true?
TreyHarris hmm... what "is value" does is say, "this attribute is mutable, but treat it from the outside of the class as if it were immutable" 20:14
nothingmuch ah
so only to the outside
yes, that makes sense
TreyHarris right
nothingmuch can two points share a coord? 20:15
or is it implicitly shallow cloned on assignment
TreyHarris no... or not sanely. if they did, they'd be the same point
i think it is on assignment, but not on binding
20:15 b_jonas joined
nothingmuch hmm 20:16
TreyHarris so assuming "my Point ($x, $y); $x .= new(3,3);" we're agreed that "$y = $x" and "$y = $x.clone" must be different, yes? 20:17
nothingmuch i think so 20:18
$y = $x is a shallow thing
since the point is by ref
i think i sort of got it
Point can say 'is value'
on itself
TreyHarris yes, but that's what got me into trouble yesterday.... it's helpful to think of "by ref", but references are gone
nothingmuch if Point is value 20:19
then $y = $x; is implicitly like $y = $x.clone;
i think
TreyHarris yes, if it said "is value" on itself, then "$y = $x" and "$y = $x.clone" would be the same
nothingmuch that is the byrefness i mean
i don't think it's useful for a class to say that it's 'is value' and still be mutable 20:20
TreyHarris then you'd do "$y = \$x" if you wanted to do reffy things
nothingmuch well
$p1.x = 4;
err
$p2 = $p1; $p1.x = 4; $p2.x ?
TreyHarris no, i think is value on a class means that having a mutator is an error 20:21
nothingmuch okay
i was thinking that if a class is value-ish
'autocloning' if you will
then any assingment on a member
is an implicit clone-and-overlay
like a haskell record 20:22
TreyHarris ok... that works too
nothingmuch hmm 20:23
TreyHarris then "$p1.x = 4" is equivalent to "$p1 = $p1.clone(:x(4))"
nothingmuch how does this relate to @x et al?
TreyHarris well, for non-value types, an attribute in "has @.xs" should be cloned into a new array @.xs with the same elements
20:24 ruz joined
TreyHarris but an attribute in "has $.xs", even if an array, will be shared after cloning 20:24
unless the *attribute* is marked "is value"
nothingmuch @x is unvalue; # ;-)
lambdabot Maybe you meant: . v
nothingmuch lambdabot: @stfu 20:25
lambdabot Unknown command, try @list
TreyHarris no.... that's what i want to avoid, the degenerate (in both senses of the word) behavior of a clone's internal behavior causing its preceptor to change
nothingmuch uh 20:26
let me parse that
TreyHarris let me rephrase
if a not-all-that-sophisticated perl programmer writes an ordinary C-struct-y class as would be obvious, if it is cloned, dwimmery should result such that they should act as separate structs. making a call on the clone shouldn't result in the preceptor (the object it was cloned from) changing 20:28
nothingmuch yes
agreed
however, if a slightly-sophisticated perl programmer wnats to use the @ sigil
and yet have it shared between clones 20:29
then... do we give that programmer the option?
TreyHarris i don't think so, because "has @.x" and "has $.x" at this point is defined as having no difference. it's an error to have both
so, for the sophisticates, we tell them to do "has $.array", which wouldn't occur to the novitiates 20:30
nothingmuch ah
hmm
TreyHarris i think there is also a "is transient", which has at least two effects: one, when the object is stored persistently, the attribute so marked is skipped. two, *either* a) in cloning, the attribute is considered 'is value' and is cloned, or b) in cloning, the attribute is not cloned at all. i don't know which is more useful 20:34
has $!scratchpad is transient; 20:35
nothingmuch i think the class of scratchpad defines it's cloned-or-uininitialized semantics
but yes
these are important, too
TreyHarris nothingmuch: not necessarily. Int's class has nothing to say about "has Int $!times_called is transient" 20:37
nothingmuch hmm 20:38
i am actually pondering this in an unrelated way
thinking about attribute grammars
and slots
in terms of the metamodel stuff
external vs. internal slots
and how they are optimized for cases of cloning etc 20:39
marcus_ I think slots should be renamed sluts 20:40
would make conversation much more entertaining 20:41
TreyHarris i think classes could be marked 'is transient' too, just as they could be marked 'is value'. for example, wouldn't a filehandle be transient? storing it persistently is worthless. if so, that would argue for cloning behavior to be to consider "is transient" the same as "is value": clone it since it's useful right now. 20:43
gaal and 'is transvestite'? a regular Pugsy Horror Picture Show 20:44
nothingmuch TreyHarris: i think it's an error
not a silent "skip" to store a filehandle
you need to make a symbolic reference on dump 20:45
and resolve it on load
TreyHarris so you can't store an object that has a filehandle attribute?
nothingmuch not sanely 20:46
when you load it
does it reopen the file?
does it die with 'can't call method read on undefined value'?
these are issues with high level serialization 20:47
TreyHarris i'm thinking it's exactly the same as "$!scratchpad"... the object must be able to deal with the possibility that at any time $!scratchpad may disappear.
so if you mark the filehandle attribute "is transient", then it isn't an error to store it, it will just be skipped. if you don't, it is an error to store it. 20:48
$!scratchpad, on the other hand, could have been stored, but you've told Perl not to 20:49
20:49 justatheory joined
nothingmuch oh 20:50
if you explicitly say that the FH is transient
then yes
it's OK
TreyHarris ok... then you're advocating 'transient' being an ok trait for attributes, but not for classes? 20:51
bbut 'value' is ok for both? 20:52
nothingmuch hmm
20:52 soisoisoi joined
nothingmuch well 20:52
gaal zzZ &
nothingmuch i think we should allow transient on classes
Int might not say it is transiet
ient
but SIllyCache might
pasteling "TreyHarris" at 216.254.17.198 pasted "Somebody try this, do you kill pugs as well?" (12 lines, 331B) at sial.org/pbot/19443 20:53
TreyHarris and "class Filehandle is transient {...} class SillyThing { has Filehandle $.moose; ...} my SillyThing $obj .= new", would storing $obj be an error unless you changed it to "has Filehandle $.moose is transient"? 20:55
nothingmuch class Filehandle should't be transient 20:56
it wouldn't
think of u
err
a thingy is transient
20:56 weinig|food is now known as weinig
nothingmuch if it's marked as such by it's container 20:57
or it's class
or both
TreyHarris why shouldn't a filehandle be transient? 20:58
nothingmuch because that would silence it's errors
sometimes people might accidentally serialize a filehandle
and they should get an error 20:59
and say "oh right, this should be transient"
or "oh crap, i forgot it has a filehandle, i can't store that"
20:59 justatheory joined
TreyHarris sounds like you're arguing that classes should *not* be marked transient 21:00
21:04 vytautas joined
TreyHarris can someone please try to replicate the above paste? 21:05
nothingmuch no 21:06
i'm trying to argue that classes should be able to be marked as transient
wolverian argh. why does perldoc mess up '=head2 C<foo> bar' ?
nothingmuch but that only very specific classes should be allowed to do that
TreyHarris maybe it's an error to create an attribute using a transient class that is not marked transient itself? 21:07
nothingmuch then you have to type it twice 21:09
my point is, by convention mark the attr as transient, not the class
but to omit typing 'is transient' all the time
classes which are obviously transient could be marked as such 21:10
21:10 crem joined
nothingmuch e.g. debugging aids, memoziation tables, etc 21:10
TreyHarris but filehandle is not "obviously transient"... because people might be tempted to store it? so instead, it should... what... override .store to throw an exception? 21:11
sorry, i'm confused... i can tell you have a clear picture, i just can't see what it is :-)
nothingmuch well 21:13
my $email = ...;
whatever
let's say you are storing that
and the impl detail is that $email is lazy loaded from a file
the right behavior is to not try to store the file handle
but instead slurp everything from it
and then serialize the structure
of the email
the actual text 21:14
and then when it's load it
then it's just loaded as a fully delazified object
that will not use the filehandle
salty-horse question: when i "eval :(dog $fido)" i get the internal representation. Param.Default is comprised of DExp and Exp, but is printed as <Param.Default> (in Pugs.Val.Code) - how can I inspect its contents?
TreyHarris ?eval :(dog $fido) 21:16
evalbot_12997 CCall "perl" CaptMeth {c_invocant = VPure (SigSubSingle {s_requiredPositionalCount = 1, s_requiredNames = {"fido"}, s_positionalList = [MkParam {p_variable = "$fido", p_types = [(mkType "dog")], p_constraints = [], p_unpacking = Nothing, p_default = <Param.Default>, p_label = "fido", p_slots = {}, p_hasAccess = AccessRO, p_isRef = False, p_isContext = False, p_isLazy = False}], s_namedSet = {}, s_slurpyScalarList = [], s_slurpyArray = Nothing, s_sl
TreyHarris what contents do you want?
?eval :(dog $fido).perl
evalbot_12997 "CCall \"perl\" CaptMeth \{c_invocant = VPure (SigSubSingle \{s_requiredPositionalCount = 1, s_requiredNames = \{\"fido\"}, s_positionalList = [MkParam \{p_variable = \"\$fido\", p_types = [(mkType \"dog\")], p_constraints = [], p_unpacking = Nothing, p_default = <Param.Default>, p_label = \"fido\", p_slots = \{}, p_hasAccess = AccessRO, p_isRef = False, p_isContext = False, p_isLazy = False}], s_namedSet = \{}, s_slurpyScalarList = [], s_slurpyArr
TreyHarris hrm
?eval (:(dog $fido)).perl
evalbot_12997 Error: unexpected ")" expecting comment, trait, "," or end of input
salty-horse <Param.Default> stores "rDefault" and "isOptional"
TreyHarris ?eval my $sig = :(dog $fido); $sig.perl
evalbot_12997 "\\VPure (SigSubSingle \{s_requiredPositionalCount = 1, s_requiredNames = \{\"fido\"}, s_positionalList = [MkParam \{p_variable = \"\$fido\", p_types = [(mkType \"dog\")], p_constraints = [], p_unpacking = Nothing, p_default = <Param.Default>, p_label = \"fido\", p_slots = \{}, p_hasAccess = AccessRO, p_isRef = False, p_isContext = False, p_isLazy = False}], s_namedSet = \{}, s_slurpyScalarList = [], s_slurpyArray = Nothing, s_slurpyHash = Nothing,
salty-horse see Pugs/Parser.hs:1378 21:17
TreyHarris ?eval my $sig = :(dog $fido); $sig.p_default
evalbot_12997 Error: No compatible subroutine found: "&p_default"
salty-horse it's inside a parameter's 21:18
TreyHarris salty-horse: dunno, i'm illiterate at that level
salty-horse (oh wait, it's not)
21:18 buetow joined
salty-horse hmm 21:18
why i'm asking: colabti.de/irclogger/irclogger_log/...=694#l1147
lambdabot Title: #perl6 2006-09-03,Sun, tinyurl.com/epuwm 21:19
21:19 DaGo joined
salty-horse i found out that commenting "lookAhead (char '=') >> return True" in isOptional (Pugs/Parser.h) does not give the error. 21:20
but it's important to check for the trailing "=", so I can't just remove it
TreyHarris salty-horse: i don't think there are any lambdacamels on at the moment, unless nothingmuch has been keeping track of this stuff... 21:21
salty-horse TreyHarris, i'll just leave gaal a message then. thanks 21:22
21:23 weinig is now known as weinig|bbl
svnbot6 r12998 | fglock++ | * v6 21:24
r12998 | fglock++ | - Expression.pm is reentrant again
r12998 | fglock++ | - unified rule parser with Pugs-Compiler-Rule
r12998 | fglock++ | - other minor fixes
r12998 | fglock++ | * Pugs-Compiler-Rule
r12998 | fglock++ | - faster rule parser: hash dispatch, non-backtracking,
r12998 | fglock++ | converted several tail-calls into quantifiers.
r12998 | fglock++ | - the rule parser is now bootstrapped with v6.pm
r12998 | fglock++ | (requires some editing to fix dependencies)
r12998 | fglock++ | - implemented <!before ...>
r12998 | fglock++ | - implemented '=pod END'
nothingmuch TreyHarris: i'm waaaaaaaay too zonked
i'm having a heavy weight conversation
in my high prio thread 21:25
so sorry =/
i guess that should be s/TreyHarris/salty-horse/;
salty-horse nothingmuch, no need to apologize.. i settled for messaging gaal 21:26
nothingmuch okies 21:27
good luck =)
21:30 kasei left 21:32 siossois joined
svnbot6 r12999 | wolverian++ | Add C<foo> to a few places, fix typos and other small nits. 21:32
21:41 elmex joined 21:56 Aankhen`` joined 22:10 plisk joined 22:13 elmex joined 22:15 jferrero joined 22:17 elmex joined 22:31 MacVince joined, Aankhen`` joined 23:02 ludan left 23:18 Daveman joined 23:33 markstos joined 23:52 markstos left, markstos joined