pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | <stevan> Moose... it's the new Camel ":P | .pmc == PPI source filters!
Set by Alias_ on 16 March 2006.
00:00 dduncan joined
geoffb Is there a way to convince pugs to do inlining? "is inline" seems to be ignored, but I may just be doing something wrong .... 00:12
fglock geoffb: it depends on the backend - I think it is just ignored in all of them 00:24
geoffb blurfle
arcady I think it's kind of premature optimization at this point 00:25
geoffb arcady, it's not so much about getting it optimized now, but rather getting the kinks out of the implementation, so that it will work later. 00:33
methinks inlining is not as trivial a beast as it may at first seem
arcady it's some kind of macro, isn't it? 00:35
buu Hrm. Anyone know which op is executed at the end of a loop? It looks like the redo one would be.. 00:36
geoffb arcady, I suppose, in a sense. But if the inlined function body actually creates and uses new variables (rather than restricting itself to its parameters), there's some magic that must happen. 00:49
svnbot6 r9969 | fglock++ | PG-P6 - added num, int, method-call 00:53
fglock a simple parser doesn't know enough about the variables to make inlining - it requires to know the variable types at compile time
but the optimizer can do that 00:54
00:56 frederico joined 01:00 fglock joined 01:07 justatheory joined
stevan audreyt ingy - ping 01:22
audreyt pong. 01:24
stevan audreyt: any more details on the yapc::na hackathon?
01:25 oylenshpeegul joined
audreyt stevan: er, no, I'm afraid 01:25
we need a non-ADD person to be organizer
stevan audreyt: :) 01:26
stevan wonders where we might find one of those,..
audreyt I'll call for one in today's journal :p
stevan I put together a tentative attendee list on the YAPC Wiki
audreyt I saw that
stevan I figured you were a safe bet for attending ;) 01:27
audreyt that would be correct 01:28
why don't you just write out your available dates
on the wiki
and I'lldo the same
stevan I am pretty much available anytime surrounding YAPC::NA actually
audreyt then write that 01:29
:)
stevan k
obra audreyt: I've been working with josh to figure hackathoon stuff out
assuming the 3 days after the conf as discussed in .jp
sounds like most of @larry will be there
stevan obra: nice :) 01:30
obra Josh cced ingy on the most recent stuff, but i haven't seen anything back
stevan: who's on your attendee list? 01:31
stevan yapcchicago.org/wiki/index.cgi?HackAThon
just a rough list of people I know are planning on attending
obra (also, was this the pre-hackathon or the post-hackathon?) 01:32
I heard rumors that a pre-hackathon was also happening
stevan obra: my list was post, as that was what audreyt told me was most likely 01:33
obra ok
stevan obra: maybe once you hear back from ingy we should send out a mail to those on that list 01:34
and an announcement on p6(lang|internals|compiler) 01:35
obra nod. I'm also waiting to hear from josh about possible venue size
audreyt previously we used p6l/p6c for coordination
stevan that seemed to work well in Toronto
obra It's my assumption that hte hackathon will NOT provide crashspace by default
stevan pictures an arena size hackathon,.. with laser light show and everything
audreyt heh
obra: not sure how sizable ingy's place is 01:36
obra audreyt: josh suggested that ingy's place was far out of town
and it sounded like @larry folks were talking about just extending their hotel stays.
audreyt that worksforme also. 01:37
stevan I wonder if the dorm rooms are available post-conference?
audreyt if ingy's space isn't as roomy as dankogai's
then staying near the dorm is definitely better plan.
obra audreyt: I think this will be a larger hackathon 01:38
audreyt understood
I may be able to arrive pre conference
but that depends on the details of Redmond hackathon
which we are also still working out detail of 01:39
obra nod
when do you need to have left boston by?
stevan and are you guys still planning an east coast/boston one as well?
obra I've got an office to offer
also, some crash space
svnbot6 r9970 | fglock++ | PG-P6 - parses 14 files out of 19 in t/01-sanity
audreyt stevan: yes, was planning for a back-to-back hackathon during that weekend 01:40
stevan obra: I got some peeps in boston too
fglock hi
stevan hey fglock
audreyt for 2-3 days probably
obra in my ideal world, it'd start in boston on 6 July
audreyt 6-8 worksforme
then I will need a ^C
obra (Kaia leaves for nyc on or about 5 july
audreyt obra: I'll still stay at Boston after 8th 01:41
obra audreyt: 6-8 in boston would give you a couple days of rest between hackathons
stevan I could probably do 6-8 too
obra audreyt: excellent. I'll have lots of cycles since ENOKAIA
audreyt but probably will do something nonpugs-related for a few days
obra has ideas ;)
audreyt like Reality :)
obra grins 01:42
audreyt or jifty ;) but that can spotaneously happen ;)
obra "jifty based reality framework"
audreyt "another reality framework?"
obra "Reality 2.0"
stevan kind like Web 2.0, only better?
audreyt more real 01:43
obra also, boston is a good place to be for 4 july, if you're into that
good fireworks. lots of jingoistic nationalism
audreyt er I've seen my share of fireworks.
01:43 hexmode joined
audreyt and nationalism totally kills me. 01:43
so no thanks :)
obra aw
stevan pushes tea into the harbor and runs away
obra that might have done good stuff to the harbor back in the day. 01:44
audreyt runHarbor :: HarborT (m a) -> m a
01:47 oylenshpeegul left 01:50 mjk joined
fglock audreyt: I moved most of the parser to Parse::Yapp - only the tokenizer uses PCR 01:50
audreyt k 01:51
01:52 FurnaceBoy_ is now known as FurnaceBoy
fglock there is only a few difficult things left to implement 01:53
TimToady audreyt: I don't mind turning the singular into the only invocant, but if we're gonna do that, I think it's time to rethink all the terms. I don't like "tie-breakers" either. 02:01
02:02 justatheory joined
TimToady self/others or one/many or some such 02:02
who/what/how
just brainstorming here...
needs to sit a while longer rattling around in my brain. 02:03
sultan/wives/harem :) 02:04
bigcheese/assistants/lackeys :) 02:05
svnbot6 r9971 | fglock++ | PG-P6 - parses 07-simple-multisubs.t
TimToady I'm also thinking about whether turning off backtracking in rules means .* doesn't backtrack or is illegal, and you have to say .*: or .*+ or .*? 02:07
audreyt .*: is almost always useless 02:08
TimToady s/\./\\d/ or whatever 02:09
I'm not talking about .
I'm talking about whether * should default to not backtrack or be illegal in rules
\d+ is how people are used to writing things, but they're also used to that notation backtracking. 02:10
having it backtrack in rx and not backtrack in rules is a problem.
audreyt oh. in that case, having \d+ mean \d+: may be nonintuitive
TimToady so I'm wondering if rules just want to outlaw the * form by default.
audreyt and it might be nice to have quantifier always subquantify
TimToady or the + form or the ? form
audreyt or explicitly use an adverb
rule:commit{ \d+ } 02:11
TimToady I think adverbs are a Haskell "try" waiting to happen.
audreyt it is exactly the same, actually.
(so, prolly bad idea)
but we do need some sort of "try" in an backtrack-by-default world
TimToady I think we need to disable backtracking on some large scope, grammar or rule or lexical scope, and then reenable it on the smallest *+ or ++ or ?+ scope 02:12
audreyt but what if I have
\d+\w+
TimToady or [a|b|c] scope
audreyt and I want to backtrack over that as a whole? 02:13
[\d++ \w++ :]
TimToady \d++\w++ works
audreyt nod.
TimToady but I'm also starting to worry with reusing all the *+? characters to mean something entirely different in the second spot.
maybe it's okay. 02:14
audreyt mm.
what does \d++ mean again?
TimToady but we now have ?? **{} and ++
and in each case the second means something entirely else than the first 02:15
\d++ means do what \d+ would do normally if we hadn't disabled backtracking.
likewise **{}+ would mean backtrack the **{}
also it's notationally wrong to say [a|b|c]+ to mean that, so it'd 02:16
have to be [...]:+ or some such.
and then I wonder if the force backtracking is really :? :+ for minimal/greedy 02:17
and *+ is really short for *:+
and *: is just the form that doesn't happen to turn backtracking back on
because not followed by ? or +
then [...]:+ and [...]:? fall out naturally, though the latter would presumably mean match the alternatives in reverse! 02:18
another thing rattling around in my head is that everywhere else in the language now, | means unordered and || means ordered.
except in [a|b|c] 02:19
so maybe we don't need the [...]:+ form for backtracking if | vs || means that.
but that's probably confusing ordering with backtracking.
one thing I've currently got in my version of S05 is that 02:20
<%h1|%h2|%h3> does longest token across all three hashes.
but ties are resolved in favor of earlier hash. 02:21
audreyt that sounds sane.
02:21 cmarcelo left
TimToady currently S05 has keys of <%h1> being rules, but I think that's insane. 02:21
I think if you have a rule that's partly fixed prefix and partly rule, the fixed part goes in the key and the rest goes in the value. 02:22
audreyt sure
TimToady rather than trying to rely on the rx optimizer to pull out the fixed prefix for us, and then what to you do with ties?
but I think I like the <%a|%b|%c> notation rather than trying to define a magical <%magichash> that does that. 02:23
and then <%statement_control|%prefix|%term> and such just fall out naturally.
audreyt yup 02:24
TimToady so I'd check that part in except I'm still wondering whether bare * ever means "don't backtrack" by default. 02:25
pm says he doesn't mind writing the colons, so maybe we just force *: most of the time.
I guess that means forcing [a|b|c]: too though. 02:26
and [a|b|c]:+ explicitly allows backtracking in to the next alternative. 02:27
but then maybe the proper place for disabling backtracking is not in rule but in grammar. 02:29
I dunno. 02:30
audreyt decides to think abnout it more and go to $job in the meanwhile
svnbot6 r9972 | fglock++ | PG-P6 - parses 07-try.t
TimToady I see we might have a lot of singleton rules mixed into a grammar, and they probably want to be restricted too.
02:30 FurnaceBoy_ joined
TimToady no problem. I'm just mulling it over myself. 02:31
I may just check in my mullings with some conjectural markings.
fglock 16 pass out of 19 in t/01-sanity 02:32
audreyt fglock!
wow!
TimToady fglock: we'll have to do something about that... :)
audreyt how do I run the sanity test with PGP6 again?
fglock perl -Ilib perl6.pl ..\..\..\..\t\01-sanity\filename.t 02:33
TimToady off to scrounge supper... &
dduncan audreyt, regarding a backlog to 1 hour ago, did I read that right to say that you *will* be in YAPC::NA Boston? 02:34
or is this hackathon in Canada nearby?
obra Boston and YAPC::NA are only loosely coupled 02:35
dduncan In any event, I just recalled that audreyt wasn't going to visit the US anymore due to poor treatment at the borders 02:36
fglock YAPC::Brasil starts in 3 days
dduncan will recheck url ...
obra She's visiting the US
fglock YAPC::SouthAmerica will be in november
audreyt dduncan: yeah, but stevan didn't make it to Tokyo
dduncan so you're making an exception?
in any event ... 02:37
audreyt dduncan: so the need for hacking with stevan overruled the uncomfortableness
dduncan I was wondering if there might be an opportunity for us to meet without my having to leave NA to do it
02:37 oylenshpeegul joined
dduncan though this summer is probably too soon for me to venture to the eastern continent ... who knows 02:38
anyway, that's all I wanted to know for now
fglock audreyt: did you manage to run the sanity test?
audreyt fglock: 02:46
Deep recursion on subroutine "Pugs::Runtime::Match::scalar" at /home/autrijus/work/pugs/misc/pX/Common/Pugs-Grammar-Perl6/../Pugs-Compiler-Rule/lib/Pugs/Runtime/Match.pm line 72.
nvm, my fault 02:47
svnbot6 r9973 | audreyt++ | * v6.pm - jump to .pmc when possible.
audreyt fglock: 02:48
Can't locate Pugs/Grammar/Postcircumfix.pm in @INC
svnbot6 r9974 | audreyt++ | * perl6.pl: use FindBin to relocate lib.
audreyt you forgot to add it?
fglock adding...
02:49 DesreveR joined
svnbot6 r9975 | fglock++ | PG-P6 - add Postcircumfix.pm 02:51
audreyt I see a parse tree
how do I run it?
fglock that's all of it 02:52
PG-P6 is just the grammar
audreyt oh, emitter isn't hooked yet
gotcha.
fglock this forces modularity :) 02:53
audreyt very true.
fglock++
fglock I'd like the AST to be a separate module - not sure how to do this yet
audreyt we also need to talk/gobby about AST sometime this weekend 02:54
I think I have a fairly complete picture now.
esp. now that what := means is clear, and BEGIN desugaring is explicit
fglock sure
audreyt ooh, summer of code is coming again 02:55
fglock: submit a SoC? :) you are actually eligible...
fglock btw, I sent the P6 project to TPF
audreyt it's $4500 though 02:56
nod, cool
02:57 beppu_ joined
fglock I'll take a look :) 02:57
buu Hrm, is there a warn or print function I can call from inside the sourc.e. 02:58
Oh, hrm. Wrong channel.
Actually,t hey won't know either
Oh well.
audreyt from inside the source? 03:00
beppu_ does perl6 have the equivalent of ruby's .method method? (It tells you what all an objects methods are.) 03:01
ayrnieu beppu - perl6 has .meta
audreyt it's called .meta.methods 03:02
beppu_ ah..
audreyt but somehow it's spelled .meta.getmethods in S12
in any case, no matter the API name, yes. :)
beppu_ bought more ram so his computer so that he could finally compile pugs. 03:03
s/so/for/
audreyt :)
(bbl...)&
03:07 fglock left
geoffb beppu_, a few months ago, that was the very reason for buying an entirely new machine. (The old one didn't support big enough RAM sticks so that I could add enough RAM for Pugs :-) 03:10
03:12 coumbes joined 03:16 FurnaceBoy joined 03:27 hlen_ joined 03:47 oylenshpeegul left
beppu_ geoffb, :) 03:51
03:58 macroron joined 04:26 weinig is now known as weinig|sleep 04:40 nirgle joined
gaal stevan &co. - even if nothing else is known, by all means let's get the dates set so that people can plan their trip 04:59
also it could be nice it we booked at the same hotel during the conf... 05:00
05:15 nirgle left
gaal I prefer it to be, well, as long as possible for our hosts :) 05:18
svnbot6 r9976 | gaal++ | r10025@sike: roo | 2006-04-17 08:27:16 +0300 05:31
r9976 | gaal++ | * FAQ::Capture - copyediting. TODO: make consistent the use
r9976 | gaal++ | of "fail" vs. "error", in all our docs and not just here.
r9977 | Darren_Duncan++ | ext/Relation/ : added initial 2 Relation.pm class attributes, initial constructor submethod and full-export method, and pod on all of those plus on what a Relation object represents ... not yet tested 05:49
dduncan so if that compiles and executes properly, it constitutes the bare minimum of a Relation implementation in Perl 6 ... 05:51
the next task is to add methods for relational algebra, including some that loosely resemble SQL operators 05:52
and anything applicable from the Set class
I would probably like to reimplement the attribute that stores the member tuples with a multi-dimensional hash, keyed on all the attributes, but I have to figure out the details first; meanwhile, it is an array of hashes 05:54
also, the number of dimensions and their types would vary for each Relation object, so I can't pre-declare those in the class 05:55
that's all for me today
gaal ruz: and now? 06:00
buu Blah blah blha. 07:18
07:29 dduncan left 07:44 Aankhen`` joined 07:45 lidden joined 07:53 elmex joined 07:55 tcliou joined 07:56 iblechbot joined 08:18 drrho joined 08:34 ardder joined 08:38 kakos joined 09:06 KingDiamond joined 09:16 larsen joined 09:21 marmic joined 09:39 pmurias joined 09:40 premshree_ joined 09:44 iblechbot joined
pasteling "ruz" at 213.251.192.51 pasted "error in the latest audrey's blog entry" (4 lines, 109B) at sial.org/pbot/16769 10:05
10:09 KingDiamond joined
gaal ruz: already fixed in svn 10:17
did the invite reach you?
10:24 bsb joined
spinclad audreyt, TimToady: i would suggest "discriminant parameters" to replace "invocant parameters" (over "tiebreaking") 10:27
and "multi-level discrimination" 10:28
as we are discriminating which multi gets the call (and i would think of "tiebreaking" as what happens after the easy discrimination is done)
but maybe this is too latinate...
gaal spinclad: shibboleth parameters is semitic. 10:35
ruz gaal: only note that I was added to the members of the project, I have login on openfoundry allready, but password reminder doesn't work :(
gaal ruz: ugh, need a metametacommitter to fix that 10:36
gugod: ping
(/me notes with amusement that he'd pronounce that word differently from what its English spelling suggests, it its original language.) 10:37
(the final consonant is a [t], not a either [th] sound) 10:38
spinclad gaal: hm.. shibboleth might work, for one-way discriminations, like (match err die) 10:40
(/me thought that [t] was a modern pronunciation, and without a dot it would have been pronounced as a fricative) 10:42
(thus yiddish [s])
s/thus/developing into/ 10:44
gaal spinclad: yiddish pronunciation is, well, just that; the two /tav/ variants in biblical pronunciation -- for all we know -- is much closer to traditional yemenite speech 10:45
or even modern spoken israeli hebrew. 10:46
spinclad how do they work in yemenite speech?
gaal [t] and soft [th] 10:48
spinclad not sure what 'soft' would mean here -- is it something conveyable in text? 10:50
i presume still unvoiced, like english 'thing' (as opposed to voiced [dh] in english 'the') 10:51
gaal sure, th like in "thin" vs "hard" th like in "this"
yes.
actually, come to think of it I'm not sure scholars agree yemenite pronunciation is in fact the closest one to whatever was spoken here in biblical time. 10:53
not sure if any group of current speakers has a clear "better" claim, but it's almost certainly not the European, Ashkenazi, version 10:55
("dialect" is too broad here, since the lexicon perhaps isn't that different) 10:56
spinclad [soft = unvoiced, and fricative] ok... that matches what i've learned, for what it's worth 10:59
lumi I thought the Yemenite sound was an aspirated T? 11:01
spinclad likely the scholarship of reconstructing biblical pronunciation was aware and relied on yemeni pronunciation 11:02
aspirated, like in Indic languages? th = aspirated stop, like mea_th_ead (roughly)? 11:04
lumi Not that strongly, but yeah 11:05
I might be way off base
Actually, in RP I think the T stop is usually aspirated 11:06
Although I might be talking crazy
spinclad [usually aspirated] true, as you can hear comparing with romance pronunciation 11:07
french and spanish stops, at least, are unaspirated compared to english 11:08
lumi Hebrew ones as well, for most speakers 11:09
spinclad [note to topic police: all this relates to "invocant parameters", and how to pronounce them] 11:11
[so it's ok]
lumi So now we know the T in "invocant" is aspirated! 11:12
spinclad no, that's a final t, so it's implosive (as well as nasalized)
lumi Oh, right 11:13
spinclad anyway, thanks, gaal, lumi -- breakfast calls & 11:16
11:25 cm joined, yvesf joined
gaal is that a single or multi egg call? 11:27
11:40 Mago joined
gugod gaal: hi there 11:57
12:00 _bernhard joined
gaal gugod: hello, ruz reports that the "password reminder" feature on OpenFoundry doesn't work; could you reset his password please? 12:02
gugod gaal: whoot, ok, I will check it out 12:03
gaal thanks! :) 12:04
12:06 lichtkind joined
svnbot6 r9978 | fglock++ | PG-P6 - parses all files in t/01-sanity; doesn't parse Test.pm yet 12:13
12:17 kolibrie joined 12:19 nothingmuch joined 12:21 weinig|sleep is now known as weinig 12:25 Limbic_Region joined 12:31 jserv-- joined
spinclad single or multi egg call: multi, distributing to two singles: we had one each. 12:46
12:54 beppu_ joined
audreyt spinclad: wha? 12:55
svnbot6 r9979 | audreyt++ | * Perl6::FAQ::FUD - the "fears" FAQ
gaal "Questions end in exclamation points"! 13:01
re: the first question, the first sentences in the first two paragraphs seem to be at odds: 13:02
1. Perl 6 has a few more operators than Perl 5
2. The number of operators has greatly increased 13:03
will whoever added that response please moderate :)
13:03 bsb joined
audreyt done :) 13:06
svnbot6 r9980 | audreyt++ | * FUD.pod: moderation is good, in moderation.
r9980 | audreyt++ | (gaal noted inconsistency in the first answer about
r9980 | audreyt++ | whether Perl 6 has many more operators than Perl 5 or not.)
r9979 | audreyt++ | * Perl6::FAQ::FUD - the "fears" FAQ
gaal is immoderation good in immoderation? 13:07
audreyt I s'pose so
gaal: I can't parse your Capture.pod Q 13:08
my $cap = \(); (sub ($x = 2) { $x }).(*$cap);
$cap is immutable, and $x gets 2.
what is inconsistent (or strange) here?
gaal you mean about optional args? that's geoffb's Q 13:09
the question is:
sub f ($aaa, $bbb? = 42);
my $cap = \(aaa => 54);
of course $cap does not contain bbb, how could it know of it? 13:10
audreyt the answer is it doesn't
($aaa, $bbb? = 42) := (aaa => 54);
gaal alright, then the question is more elaborately,
audreyt the LHS Signature knows of $bbb
the RHS Capture does not
the Signature inquires Capture of a named bbb or a positional 13:11
it offers neither
so it gets the default
mutability doesn't enter the picture
gaal if I want to write code from outside &f that'll predict what &f's actual args will be, what do I need to do?
audreyt predict? :)
you mean something like 13:12
gaal audreyt: ACK on mutability, I think I was confusing geoffb by insisting that the make_car example contain an optional color arg
yes, I can imagine a highly introspective environment that wants to know e.g. what lexicals will be in some scope 13:13
audreyt &f.assuming(aaa=>54).bound.<bbb>; 13:14
or some such?
I don't think we have APIfor that
gaal one way to do that is to write generic delegators like the example in the FAQ, but that doesn't know about default values
s/like/that produce things like/ 13:15
it's okay if we don't have API for it *yet* :)
audreyt cool :) 13:16
stevan morning ladies,.. gentlemen
audreyt gaal: it is also possible to think
bsb audreyt: did $capture ~~ $signature fly?
audreyt &f.signature.bind(aaa=>54).<bbb>
stevan gaal: I am staying in the dorms@YAPC::NA, just FYI
audreyt will simply return 42. 13:17
bsb: I don't see why not
cognominal audreyt, last years I propose a pmc called siva that had at once hash, scalar and arrays capabilities. I was thinking it was a starting place to implement AST nodes or XML nodes. I am not sure how capture are implemented in parrot, but I think that something like the siva pmc would be nice.
audreyt TimToady: can we get
bsb Or are there bigger plans for signatures and rules?
cognominal I can try to revive that code that Leo did not integrate to parrot. 13:18
audreyt $sig ~~ $cap # match if $sig.bind($cap)
Limbic_Region audreyt - does Pugs currently support binding to a stream/array as outlined in S05 ?
audreyt cognominal: woooot
Limbic_Region: Pugs currently doesn't support any of the newer binding semantics
cognominal probably the pmc layout has changed in the mean time
audreyt I'll see to it :)
Limbic_Region adureyt - note the confused look on my face 13:19
err audreyt even
gaal dorms? oh, I wasn't aware those were available. /me looks
13:19 hexmode joined
stevan thought Limbic_Region just was having gas 13:19
Limbic_Region binding to a stream has been part of p6 since the beginning AFAIK - even if the semantics weren't worked out?
audreyt Limbic_Region: oh you don't mean binding
$stream ~~ m/pattern/
you mean smart matching
the answer is that we don't support
my $stream is from($fh);
so you can't get a stream 13:20
Limbic_Region I mean the section in S05 entitled Matching against non-strings
ok
cognominal shorten groups.google.com/group/perl.perl6....amp;&d
Limbic_Region perlbot help
perlbot (fact)::tell (who) about (what)::(what) > (who)::learn (what) as (info)::relearn (fact) as (info)::phone (phone number)::shorten (url)::shorten it::search (module)::docs (module)::perldoc -f (function)::jargon (term)::math::fortune::flip::host (type) (record)::rot13::roll (die)::tempconv (temp)::scramble (foo)::8ball::slap::diss::what time is it::top/bottom (number) karma::geoip (ip)
Limbic_Region cognomial - prefix what you just said with perlbot and it will work
audreyt Limbic_Region: the from('file') form is never specified anyway
bsb Limbic_Region: I don't think that section of S05 is very clear yet 13:21
audreyt I have no idea what it means
Limbic_Region bsb - I agree which is why I asked
cognominal perlbot shorten groups.google.com/group/perl.perl6....amp;&d
perlbot Shortened URL: xrl.us/kvo7
Limbic_Region this all started with a conversation I had on #perl a few days ago with "What does awk do better than Perl" 13:22
I got a bunch of "blasphemy" replies as apparently no one had read perlvar closely enough (see $/ for explanation)
I said - this of course is fixed in p6
and then I went to find the docs that said so
and went - hrmmm
spinclad audreyt: [re wha?:] see above, 1 1/2 hour before... 13:23
13:23 Qiang joined
Limbic_Region and since pugs is so good at fleshing out stuff - I was wondering 13:24
bsb It seems like backtracking + streams is a nasty combination 13:25
theorbtwo bsb: It just requires buffering from where you were at the beginning of the parse until the parse finishes.
bsb A regex that can be converted to a DFA might be better
audreyt bsb: parsec does that all the time :)
bsb and default greedy, one .* and you've read the whole stream/file 13:26
13:27 fglock joined
pmurias hi fglock 13:28
fglock pmurias: hi!
bsb audreyt: is Parsec equivalent to regexen in that regard?
audreyt bsb: sure 13:29
bsb (maybe the user just need to be careful writing the regex)
audreyt many anyToken
# always slurps anything
(or "many anyChar" under CharParser) 13:30
pmurias fglock: have you seen my realy ugly emitter
?
fglock yes - nice! 13:31
Limbic_Region bsb - if you are interested, there are several nodes at the Monastery discussing this (as well as some implementations) in p5
bsb Limbic_Region: sure
Limbic_Region ok - will dig them up
audreyt pmurias: how do I run sanity tests against the emitter? 13:32
pmurias the current problem is that the emitter needs hand modified ast 13:33
Limbic_Region bsb - [id://225083] [id://298436] [id://298971]
pmurias i could either write a connector with the parser, or some initial ast design must be made 13:34
Limbic_Region bart was apparently very vocal on the topic back in the RFC days of p6 but his idea was rejected
audreyt pmurias: care to elaborate a bit (and point me to the code to look)?
pmurias: connector-with-parser sounds sane
Limbic_Region his idea being a flag that could force a failure under certain circumstances 13:35
gaal ah, speaking of parsers, that packrat tech is unfortunately probably not applicable for us 13:36
because it doesn't do well in cases where the parser is very stateful 13:37
audreyt indeed 13:38
(I've looked at SDF2 and packrat before)
SDF2 is very interesting by itself, though
gaal does anyone have a taxonomy of parsers somewhere? that would be so nice 13:39
bsb gaal: Chomsky had one laying around 13:42
pmurias nopaste.snit.ch:8001/6959 - ilustrates the problem with the current AST
13:43 Aankhen`` joined
gaal heh heh heh, "a taxonomy of parsers" in fact sounds like a proper mass nount 13:43
s/t$//
kolibrie stevan: re YAPC::NA, which dorms are you in, MSV or SSV?
gaal search.cpan.org/src/TBONE/Parse-Rec...classes.tt 13:44
pmurias fglock: the basic insconsistency with the ast is that it both takes {exp1=>1,exp2=>2,op1=>'+'} and {if=>{exp=>...,block=>...}} forms 13:45
fglock should it be exp1=>'if' instead? 13:46
I mean op1=>'if' 13:47
pmurias what does the 1 after op mean? 13:48
fglock op2=>'else', exp1=>block..., exp2=>block...
some ops have 2 names (circumfix, postcircumfix)
pmurias could you explain more? 13:49
fglock like, parenthesis are parsed to { op1=>'(', op2=>')', exp1=>block... } 13:50
pmurias i see 13:51
it would be much better 13:52
fglock this could be processed into op=>'circumfix:<( )>', but I'm not sure if it should do that 13:53
pmurias i wanted to suggest the same thing :) 13:54
it could be separeted to a post-processor, IMHO the simpler and more consistent the AST the emitter gets the better 13:55
svnbot6 r9981 | fglock++ | PG-P6 - parses cpan-barewords like Test-0.0.6
fglock yes, we need to make an AST spec 13:56
pmurias fglock: do you have any ideas for the AST? 14:00
svnbot6 r9982 | gaal++ | r10033@sike: roo | 2006-04-17 16:59:04 +0300
r9982 | gaal++ | * FAQ::FUD - English tweaks
r9981 | fglock++ | PG-P6 - parses cpan-barewords like Test-0.0.6
fglock pmurias: not really - I would like to reach a consensus with audreyt and pmichaud if possible, so that the ASTs are portable between compilers 14:02
at least at some low level, before semantic analysis and optimizations 14:03
audreyt fglock: ok... let's gobby about it now? 14:05
fglock ok!
audreyt fglock: can you host? I'm again behind NAT 14:06
pmurias can i join :)
fglock sorry, I'm on NAT too is it possible to use feather? 14:07
pmurias: sure
bsb Will there be an AST -> perl6 function like Deparse? 14:08
audreyt there better be :)
bsb then can perl6 be used b/w systems and asts be internal only? 14:09
pmurias just implement audreys rulesas-templates proposal
kattana_ can I spectate :p we need some "live streaming video of perl6 development :O"
14:10 justatheory joined
audreyt it goes without saying all can spectate :) 14:11
pmurias when will the gobby session start?
audreyt like, now
14:11 frederico joined
audreyt try connect to perlcabal.org 14:11
gaal does gobby come with a headless host? 14:12
audreyt not sure
gaal so you're pulling a display? 14:13
audreyt yeah
well no
ssh -R
+ tcpxd
pmurias: can you type something?
stevan kolibrie: SSV, and you? 14:14
audreyt fglock: ?
fglock one sec...
Limbic_Region -40 degrees is the only point that is the same in both F and C scales. Anyone want to take a wager on the intersection of the number of commits of Pugs and Parrot? 14:41
rw-rw-r-- 0? :P 14:42
Limbic_Region rw-rw-r-- for the purposes of the wager, they must be at the same rev level at the same time (otherwise they would intersect at all points just as C and F would) 14:43
kolibrie stevan: haven't signed up yet, working out details with $work
stevan kolibrie: cool, are you going to come to the hackathon? 14:48
kolibrie stevan: depends a little bit on where and when it is 14:49
right now it's not looking too promising
kolibrie wonders if he can convince the $powers_that_be to let him stay an extra day 14:51
15:03 elmex joined 15:06 lichtkind joined
lichtkind ?eval hex 11 15:12
15:12 evalbot_9966 is now known as evalbot_9982
evalbot_9982 Error: No such method in class Int: "&hex" 15:12
lichtkind no hex commend? 15:13
theorbtwo It's a method. What would the hex method on integers do, and why do you think there would be one? 15:14
15:21 enantiodrome joined
lichtkind so i heve to clarify that this is a hex number? i mena perl5 has a hex method to convert hex into dec 15:21
gaal ?eval 0x11 15:22
evalbot_9982 17
lichtkind yeah this is also possible in perl5 but thy did we has a hex function? 15:24
sorry had
15:24 saorge joined
gaal ?eval my $x = "11"; :16($x) 15:25
evalbot_9982 17
gaal hex and oct are obsoleted by general :n() syntax
?eval :42(11) 15:26
evalbot_9982 43
lichtkind now i understand :) all your base belong to us 15:27
thanks 15:28
xinming perl 6 rocks.
gaal exactly :)
lichtkind++ 15:29
lichtkind ..yeah thats why im writing this
thank one question left florian offered me pugs committer bits but i always thought everybody can contribut?
xinming lichtkind: If you wish to contribute, you can do that. :-) 15:30
gaal everyone is offered a committer bit. :)
lichtkind im not even willing to lern haskell but jeah but maybe as english hacker :) but still not know enough about perl6 15:33
xinming read synopsis... It's a good tutorial if you know a little about perl 5. 15:34
pmurias lichtkind: there's a perl5 subproject 15:35
under misc/pX/Common, feel free to commit at will 15:36
lichtkind thanks pmurias but i have my own open source perl project wich is huge enough for me, my primary interest is no writing this perl6 tutorial but i am willing to help with the bible and similiar things
maybe alias would kill me if he see me here :) 15:38
pmurias why?
audreyt purrs 15:39
gobby++ # fun
15:40 bsb left
lichtkind because his tpc grant i hangin on something i should do 2 weeks ago, but you know finding a name is very hard 15:40
audreyt so, if google Summer of Code has a Pugs category
svnbot6 r9983 | audreyt++ | * docs/notes/p6ast_draft - gobby log on P6AST joint design session. 15:41
audreyt is there anyone here who'd be interested (and eligible as a student)?
(I know that fglock is)
TimToady audreyt: I've always thought ~~ should work between sig and cap. 15:42
well, as long as it was possible to think that...
audreyt cognominal: would you mind if I simply commit siva.pmc as the Capture pmc?
TimToady: cool!
cognominal feel free to do it 15:43
but I think that Capture would probably be derived from it (if possible)
But I see potential for P6AST. 15:44
audreyt oh wait
cognominal I will try to see if I can create a subset of e4x as an extension of the Parrot perl6 compiler 15:45
audreyt the hash part and array part are related?
or does the array mean children
and hash means atts?
cognominal yes!
you got the idea
audreyt oh, so it's like twig.
I love twig.
cognominal and you can multiplex a string, a float and int as != scalar 15:46
the string would be the name of the node.
audreyt that's very moose.
gaal }:)
cognominal thx for the compliment
I could not dream better compliment
and I suppose that with Perl6 we could multiplex enum to the siva int 15:47
TimToady so basically it's a bag of things discriminated by type?
cognominal exactly
it should foster concise PIR code 15:48
Perl is all about context, why PIR should be any different 15:49
geoffb audreyt, re: the unanswered Capture.pod question ... from what you said abaove, I think my question, and the line 'say "The color is $car_cap[1]"; # black' could just be stricken -- or maybe add a note explaining that said line won't work.
audreyt \('body': :bgcolor<black, \('h1': "moose", \('a': :href<#x>, 'antler') ) )
I mean :bgcolor<black>. 15:50
svnbot6 r9984 | audreyt++ | * 17:49 < geoffb> audreyt, re: the unanswered Capture.pod question ... from what
r9984 | audreyt++ | you said abaove, I think my question, and the line 'say "The
r9984 | audreyt++ | color is $car_cap[1]"; # black' could just be stricken -- or
r9984 | audreyt++ | maybe add a note explaining that said line won't work.
gaal <strike>geoffb: I think you're right, please commit</stirke> 15:51
somebody's in hypermode
geoffb Wow, I expected the first answer to come on-channel, but I didn't expect it would be svnbot answering me. :-)
audreyt :)
gaal do we have some sort of provision for ordered pairs in captures? 15:52
audreyt TimToady: I went ahead and added Capture~~Signature to S04. 15:53
bsb++
gaal: elaborate?
TimToady you naughty girl
lichtkind pmurias thanks but i really have to find a name first
audreyt grins a mischievously, chershire grin.
cheshire, even.
gaal audreyt: think of xml <doc><e>1</e><e>2</e><e>3</e></doc> 15:54
cognominal audreyt, I don't know Twig, but coming from mirod it can only be good 15:55
pmurias lichtkind: cheshire would be a nice name for pretty much anything
audreyt gaal: I really don't know
pmurias unless you write funeral software eq. cofine lid drivers
audreyt \('doc': \('e':1;2;3)) # maybe
not sure at all. 15:56
lichtkind pmurias not for an text editor :) :) :)
audreyt TimToady: can a MultiCapture contain several invocants?
zip(1: 2; 3:4);
TimToady: somehow I think even for MultiCapture, there should just be one or zero invocant
as in $foo.bar(1;2;3)
but not bar($foo:1; $boo:2; $blah:3) 15:57
that will allow the
bar($foo: 1;2;3)
notation.
TimToady at the moment I think it's just multiple ordered lists
pmurias lichtking: better than emacs *and* you get a nice logo
TimToady but we did talk once about allowing sublists to have named 15:58
and if we allow named, I suppose we have to allow anything
audreyt not so; I think allow pos+named makes more sense
than pos+named+inv
i.e.
$obj.meth(1, 2, x=>42 ; 3, 4, y => 51); 15:59
lichtkind pmurias true but you know im a bit spiritual interested (thats becaus alias is scared of my name proposals) it ahs to do something with the idea i reach for
audreyt otherwise the dispatcher will have a very hard time
TimToady there are ways in which it would be better to say that the invocant is just the first positional.
audreyt TimToady: but then
meth(1, 2, 3; $obj: 4, 5, 6)
pmurias lichtkind: what does your editor specialize in?
audreyt or even
meth(name => 42; $x, $y, $z) 16:00
you'd note like $x to magically become invocant
s/note/not/
and I think the $obj:4,5,6 form above should be illegal, as otherwise dispatch is very hard.
lichtkind pmurias its still early but hes is spezialed in being perlish :)
TimToady I think the Invocant type is a boolean.
saying that the first positional was attached via : rather than ,
maybe 16:01
lichtkind pmurias Timtoday and easy things ..you know the gosdpel
audreyt sure, those are isomorphic :)
TimToady so failover doesn't have to unshift, just falsify the bit.
audreyt or ignore the bit.
lichtkind pmurias and its more graphics oriented than emacs or vi
audreyt (even easier)
TimToady and it frees up the scalar slot for other things maybe...
audreyt so you think @$cap should return the inv? 16:02
pmurias walk&
audreyt I think it's fine to have it internally as a boolean
(very clean)
TimToady maybe ?$cap returns whether $cap[0] is invocant. But then what about Match boolean? maybe it works anyway... 16:03
audreyt but $(\4) would better still work as 4
the match boolean would work anyway that way.
(always it has an invocant of the result object which may be a simple substring) 16:04
TimToady right
audreyt but we don't call that $cap[0].
if we do, we are back to $1 $2 counting.
which may not be a bad thing ;)
TimToady urg
audreyt $0 becomes essentially perl5 $& 16:05
I know certain people who would actually welcome that change :)
TimToady it kinda clobbers ($a,$b) = // though from a P5 viewpoint
PerlJam audreyt: screw those people! They don't know what they're talking about ;)
16:06 FurnaceBoy joined
audreyt PerlJam: you don't have problem adjusting to $0 $1? :) 16:06
PerlJam audreyt: as long as I know which adjustment I'm making, I don't have a problem with it :)
TimToady lemme think about it in the shower...
audreyt TimToady: if so, then maybe @$cap still doesn't return the invocant :)
PerlJam (Though I have to admit, $0 as p5 $& does have some allure)
audreyt (that is what pcre does) 16:08
TimToady the invocant is special anyway because it is *not* discriminated by type within the type bag. It could be anything
audreyt no doubt to maintain perl5, er, compatibility
TimToady really &
fglock back 16:11
clkao audreyt: happy birthday! 16:13
fglock is there a tree-editing cpan lib that could be used for p6-ast semantic analysis?
happy birthday! 16:14
audreyt clkao: thanks! :)
fglock: XML::Twig XD
but seriously...
there is Language::AttributeGrammar
which would make allison happy (as the code may be shared with TGE later)
fglock looking... 16:15
audreyt TimToady:
pasteling "audreyt" at 220.135.90.73 pasted "S06 patch for TimToady to review :)" (45 lines, 1.6K) at sial.org/pbot/16771 16:16
audreyt TimToady: this merely makes that
method foo (*@;slices)
work
instead of having the invocant only present on the first slice
or all slices
or something equally silly
PerlJam: k :) 16:24
PerlJam audreyt: so what things make sense in $$foo? That will do something meaningful if $foo is a Capture or Match object or what else? 16:25
audreyt PerlJam: I think anything that can present a mutable scalar interface can make use of it
fglock is there something written about disambiguating '<' from '<str>' and '/' from '/rule/' ? 16:26
audreyt ${open('/etc/passwd')} = 'woot'; # bad example
cognominal audreyt: I don't care about the siva name even if I think it is short and mnemonic but I see it as base classe more than anything.
audreyt cognominal: gotcha.
pmichaud fglock: <str> is term position, '<' is operator position
fglock: same with rule
fglock but %hash<str> is operator-like 16:27
pmichaud that's postfix position :-)
audreyt postcirfumfix :)
pmichaud okay, postcircumfix :)
audreyt that wasn't a correction -- I didn't see your line :)
pmichaud (I call it postfix position, since other postfix ops can go there)
audreyt right.
pmichaud hmm. "postfeefifofumfix" 16:28
audreyt lol
PerlJam: in any case, this is just rationalizing the perl5 deref
fglock ok - currently I just send a stream of op/term to the precedence parser - I don't check what it 'wants'
audreyt PerlJam: instead of overload '${}', one has now just to declare .as(Scalar)
pmichaud fglock: yeah, one has to keep track of what is expected
audreyt PerlJam: far easier, and agrees with other casters like +$x and ~$x and *$x. 16:29
pmichaud audreyt: I much prefer prefix:$, prefix:@, etc. Very nice.
fglock: PGE's opp originally had two states -- expect_term and expect_oper. I've since generalized it into a multi-state parser -- there can be a superposition of things expected (in order to be able to handle listops and other oddities) 16:30
audreyt oh cool, OPTable.pir handles listassoc now 16:31
I had to patch the Hs port by hand to get that parsed :)
fglock I'll check if I can get 'expect' info from Parse::Yapp
audreyt pmichaud: chainassoc is a bit tricky
pmichaud audreyt: yes, it does. And did you see languages/perl6/lib/grammar_optok.pge ?
audreyt: I'm currently parsing chainassoc as infix and fixing it up in the match->ast step 16:32
audreyt pmichaud: but
1 == (2 == 3)
ne
1 == 2 == 3
pmichaud oh, wait, I'm currently fixing it up in the pir code step
audreyt and if you don't have a paren form, you are going to fail that
pmichaud not at all
audreyt mm, "not at all"? 16:33
pmichaud okay, it didn't work -- lemme check into it :-)
circumfix:( ) is used to disambiguate there (at least it's supposed to be)
audreyt aye
pmichaud oh wait, it did work
audreyt that's the "paren form" 16:34
pmichaud p6> say 1 == 2 == 3
0
p6> say 1 == (2 == 2)
1
audreyt woot
pmichaud++
pmichaud p6> say 0 == ( 1 == 2 )
1
p6> say 0 == 1 == 2
0
i.e., it handles it. :-)
I think that was Friday's fun for me. The days begin to blur together 16:35
audreyt it's fortunate that all builtin chainassoc are in one preclevel :)
I still don't know what happens when you mix it with infix in the same level 16:36
maybe it's just forbidden ;)
pmichaud I think that's forbidden in S03
er, S06
Note that operators "equiv" to relationals are automatically considered chaining operators. When creating a new precedence level, the chaining is determined by the presence or absence of "is assoc('chaining')", and other operators defined at that level are required to be the same.
audreyt right.
svnbot6 r9985 | masak++ | fixed various typos in Capture.pod 16:39
16:42 SamB joined
fglock cool - Parse::Yapp can return the 'expect' list 16:43
ingy hi audreyt 16:52
audreyt ingy: hi 16:55
xinming audreyt: isn't &?ROUTINE still not exist? 17:13
obra hey ingy
xinming s/is/does/ :-) 17:14
17:15 vanjuggler joined
audreyt xinming: yes, but pugs currently spells it as &?SUB 17:16
17:16 zgh joined
vanjuggler Hey folks! I just watched the YAPC::Tokyo pugs presentation! It's awesome! Great work! 17:16
audreyt thanks :)
audreyt curtsies 17:17
vanjuggler The slides look gorgeous too!
audreyt is this luke closs? :)
vanjuggler It sure is!
theorbtwo xinming: It's still a double-negitive. I think you want "Is &?ROUTINE still nonexistant?", or "Does &?ROUTINE still not exist?".
audreyt a commit bit is on your way.
vanjuggler heh 17:18
I'm just co'ing pugs as we speak
audreyt good, you can ci shortly after
vanjuggler I wanna try Module::Compile and write some perl6!
audreyt is getting better at this preemptive-committer-bit thing
vanjuggler heh
PerlJam audreyt++
audreyt vanjuggler: excellent :) too bad I'd need to sleep soon 17:19
but I'll be around tomorrow :)
vanjuggler I really think you guys are doing a tremendous job. All the hackathons and blog posting is great!
You guys are like rock stars. :)
xinming theorbtwo: thanks. Sorry for me poor English. :-/
theorbtwo No problem. 17:20
xinming audreyt: can't we call it self in pugs currently?
hmm, using &?SUB
vanjuggler Does the Module::Comple perl6 -> perl5 compiler module exist on CPAN yet?
fglock vanjuggler: no, it is being rewritten 17:21
xinming hmm, eg... sub mine { &?SUB }; mine();
17:21 ghenry joined
xinming I know it is a infinite loop. :-) 17:21
vanjuggler Is there anything I can try in the pugs svn?
theorbtwo xinming: No, it's mine() == \&mine 17:22
sub mine { &?SUB.() } would inf-loop
vanjuggler I just got a driver perl driver written for Selenium Remote Control, I'd like to also make a perl6 version... :)
xinming theorbtwo: thanks
theorbtwo ...I think. Don't take my word as gospel. 17:23
fglock vanjuggler: the current version of P6->P5 is in misc/pX/Common/Pugs-Grammar-Perl6 - but it currently emits just the syntax tree - no P5 code yet. The old version is in misc/pX/Common/lrep-compiler 17:24
vanjuggler fglock: thanks! 17:25
gaal theorbtwo: yes, if by "==" you mean "evaluates to". 17:29
17:29 izut joined
gaal (typically denoted by fancy => in func-p texts) 17:30
theorbtwo Er, what I meant was that the expression mine() == \&mine is true.
Limbic_Region hrm - if I wanted to overide the way Makefile.PL did something (force USE_ZLIB to 0) but wanted to do it permanently so updates to Makefile.PL wouldn't overwrite my fix - what should I do
Limbic_Region doesn't like any of the ideas he has thought of so far 17:31
gaal theorbtwo: yes. a tautology probably, in some mathy sense :)
Limbic_Region: if you think this is something other people might need, add it to the config.yml scheme 17:32
Limbic_Region no - it is just me on 1 box
home works fine - work doesn't
Limbic_Region currently can only get Pugs to compile at work if he links with cygwin 17:33
gaal well, if you aren't afraid of accidentally committing, just throw in an override at the appropriate place. worse that could happen is a conflict. 17:34
Limbic_Region gaal - I was thinking along the lines of having command line options to overide the "probing" defaults 17:35
for instance perl Makefile.PL USE_ZLIB=0 would force it to 0 even if the probe said it was available 17:36
gaal Limbic_Region: or even skip the probe. not a bad idea actually 17:37
please commmit :)
Limbic_Region gaal - let me first confirm that my hardcoded approach even succeeds in doing what I hope it does 17:39
17:39 vel joined
svnbot6 r9986 | fglock++ | PG-P6 - the tokenizer rules are called from within the precedence 17:39
r9986 | fglock++ | parser, so that they can change depending on the current state
Limbic_Region this could take a while
17:43 elmex joined
ingy hi obra 17:44
gaal needs a reminder. In math, what's the friend concept to a "range" of a function, on the side of the results?
17:44 siosiosios joined
audreyt domain? 17:44
gaal ah yes, thanks :) 17:45
audreyt np :)
glad to be your DNS
17:45 siosiosios is now known as DaGo
gaal f :: Range -> Domain 17:47
xinming long time no commit. :-)
fglock audreyt: be around for #10000 ! 17:48
svnbot6 r9987 | fglock++ | PG-P6 - AST includes 'pos'
r9986 | fglock++ | PG-P6 - the tokenizer rules are called from within the precedence
r9986 | fglock++ | parser, so that they can change depending on the current state
xinming oops...
audreyt fglock: heh sure :)
xinming thinks he should wait for 9999 commits, and get the 10000 :-P
Limbic_Region actually - I can't compile on Win32 for a different reason ATM
gaal heh, nice birthday gift
Limbic_Region cd .. is blowing up 17:49
oh yeah, happy bday audreyt
svnbot6 r9988 | yiyihu++ | s/&\?SUB/&\?ROUTINE/g in Prim.hs and Monads.hs, So that &?ROUTINE()
r9988 | yiyihu++ | works.
r9988 | yiyihu++ | And initial import for misc/S29_round.pl. :-)
xinming audreyt: your birthday?
gaal xinming: somehow I see rs 10000, 10001, 10002, through 10042 coming in quick succession :-)
audreyt xinming: yeah, Apr 18 17:50
xinming happy birthday...
audreyt xinming: oh, please fix all ?SUB in examples and t
or someone else fix that :)
xinming is hungered for fixing... and watching the revision number... O_O 17:51
17:52 arcady joined
Limbic_Region is extremely confused 17:52
svnbot6 r9989 | audreyt++ | * Perl6::Spec - update to upstream r9741
17:53 ruz joined
Limbic_Region is there any reason why "ext\Algorithm-TokenBucket"; "nmake -f Makefile all -nologo"; "cd .." should be failing on the cd .. on Win32? 17:54
xinming audreyt: do I need to fix the files for which extension is pil?
Limbic_Region gies up and heads to a meeting but asks that if anyone else is succesfully building clean on Win32 to please raise their hand 17:58
xinming swing his arm as tired of typing... ;-) 18:00
avar gives xinming his powerball
gaal Limbic_Region: ugh, I seem to rememer somebody bringing up that "..", but I don't remember who or when, sorry 18:01
something like two months ago I think? it may have even hit p6-c
svnbot6 r9990 | yiyihu++ | Replaced &?SUB to &?ROUTINE in t and examples dir. 18:11
r9990 | yiyihu++ | Except for files which extension is .pil.
audreyt xinming: no 18:12
xinming feels lucky about keeping ".pil" files away 18:13
18:15 wilx joined
xinming anyone here would tell me what round-alternate do? 18:17
theorbtwo Switch between round-half-up and round-half-down every-other round operation, I'm guessing, but that's only a guess. 18:21
xinming www.pldesignline.com/howto/showArti...=175801189 18:23
here it talks about round-alternate
theorbtwo Ah, it's either round-half-even or round-half-odd. 18:26
xinming theorbtwo: do you mean it use round-half-even and round-half-odd randomly? 18:28
theorbtwo No, pick one in your implementation.
The author doesn't bother to give them different names, apparently.
xinming or, the sequence is `round-half-even -(next call)-> round-half-odd -(next call)-> round-half-even ... ... `?
theorbtwo That was my guess, but after reading, I don't think that's what he meant. 18:29
xinming the more words, the more money ... :-) 18:31
kolibrie stevan: looks like I might be able to be in Chicago starting Sat 24 June and departing Fri 30 June 18:33
18:34 elmex joined
stevan kolibrie: very cool 18:45
kolibrie stevan: so is the hackathon at IIT?
or, for how long should I book in the dorms? 18:46
fglock telling %ENV<1> from %ENV<1 requires backtracking, right? 18:47
or is %ENV<1 an error? 18:48
audreyt an error.
you commit on %ENV<
stevan kolibrie: the location of the hackathon is still undetermined 18:49
audreyt same for moo<1
you have to use whitespace for infix <.
fglock always?
stevan kolibrie: however, I will be going, and my room/floor is always open to you :)
audreyt fglock: currently pugs accepts 1<1 18:50
but I'm sure TimToady would say it's an error.
fglock ok - thanks! 18:51
kolibrie stevan: so I should book through Wednesday night, and then hang out in your general proximity
18:53 bsb joined
PerlJam wonders if someone had O'Reilly send him "Time Management for System Administrators" anonymously 18:56
stevan kolibrie: sure 18:58
kolibrie loads up yapcchicago.org 19:00
stevan kolibrie: if you wanna coordinate more, send me an email, its easier for me to keep track of that way :)
kolibrie stevan: sure 19:01
19:03 DesreveR is now known as r0nny
svnbot6 r9991 | audreyt++ | * Perl6::Overview::Control - Control Structure 19:08
r9991 | audreyt++ | (Begining of quickref->Overview move.)
r9992 | audreyt++ | * Perl6::Overview::Data - Data Types
r9992 | audreyt++ | (This may want to be refactored into Array/Hash/etc)
r9993 | audreyt++ | * Perl6::Overview::Operator - Operators overview
r9994 | audreyt++ | * Perl6::Overview::Variable - Magical variables
gaal w00t 19:09
svnbot6 r9995 | audreyt++ | * Perl6::Overview::Reduce - Reduce metaoperator 19:14
r9996 | audreyt++ | * Perl6::Overview::File - File and Filesystem operations 19:26
r9997 | audreyt++ | * Perl6::Overview::Object - Object-oriented Programming
r9998 | audreyt++ | * Perl6::Overview::Rule - Grammar Rules
r9999 | audreyt++ | * Perl6::Overview::Subroutine - Subroutines
r10000 | audreyt++ | * Perl6::Overview::Smartmatch - Smart Matching
r10000 | audreyt++ | (Happy Birthday, Audrey. :-))
theorbtwo 10,000! 19:27
audreyt woot :)
fglock congrats!
audreyt hopes to release P6Doc on CPAN this weekend
xinming ... 19:29
oops...
:-(
audreyt xinming: you can have the 10001th :) 19:30
(that was the last one in the batch to modernize+podify quickrefs)
izut fglock: are you there? 19:33
fglock izut: here!
izut :)
fglock: I tried to talk to you in private.
Please join #perl.br :)
I'll talk to you soon, I'll get a coffee :) 19:34
xinming #10001 is mine... 19:35
svnbot6 r10001 | yiyihu++ | Perl 6 version of round_ceiling, round_floor, round_toward_zero, round_away_from_zero finished.
xinming there are 3 remaining... :-)
fglock izut: sorry, can't join #perl.br from cgi-irc
audreyt so it is :)
xinming and also, there are 2 functions which I don't know what It really means. :-P 19:37
I'll ask these the other day
izut fglock: Ok... Mago was trying to talk to you. Oh, Randal is alone tonite, I think it is nice if somebody would get some food with him. I also contacted Galvao for this. He is at Comfort Hotel Centro Administrativo. 19:40
gaal hee: "Because Stevan can't make it to Tokyo last month" - of course not, his time machine is b0rked
theorbtwo gaal++ 19:41
gaal is there a conf in Brazil right now? 19:42
izut gaal: yes.
gaal cool! have a great conf :)
izut Well, it will start this wednesday (19/Apr)
:) YAPC::Brazil 19:43
brb
19:43 hlen_ joined
fglock izut: ok - I'll try to contact him! 19:48
19:50 lichtkind joined 19:58 justatheory joined 20:00 KingDiamond joined
svnbot6 r10002 | fglock++ | PG-P6 - the lexer knows about '1 < 2', '%EXP<str>', and '@a = <str>' 20:00
pmurias audreyt: Happy Birthday 20:03
audreyt *smile*
now, it's 4am.
I should probably sleep :)
fglock pmurias: I started changing the AST 20:04
but it will need a lot of post-processing to get all semantics right 20:05
20:05 justatheory joined
pmurias fglock: is the ast speced enough? 20:06
fglock not really - but now we can fill in the spaces
20:06 defcon8 joined
defcon8 when is perl6 planned to be released? 20:07
pmurias defcon8: christmas
fglock I just rewrote the lexer - now it has more info about the state of the parsing, and takes less memory
pmurias i'll look 20:08
fglock it will need some refactoring later - I'm just trying to make it parse Test.pm 20:10
so that we can run pugs test suite :)
20:11 Mago joined
fglock but don't try it yet - it may enter an infinte loop 20:12
Mago: hi!
Mago hi!
fglock Mago: are you in Porto Alegre? 20:13
Mago no, I will arrive at 19 07:00 20:15
svnbot6 r10003 | yiyihu++ | Perl 6 version of round_random, round_up, round_down implemented. 20:19
r10003 | yiyihu++ | Now, Math::Basic rounding suite according to
r10003 | yiyihu++ | www.pldesignline.com/howto/showArti...=175801189
r10003 | yiyihu++ | almost finished.
pmurias fglock: you don't like YAML.pm?\
audreyt YAML::Syck! </knee-jerk-response> 20:20
fglock pmurias: I need to look at the internal perl structure for debugging
xinming if you know perl 6, You'll never want perl 5. :-) 20:21
pmurias fglock: i agree that YAML, makes some things more difficult to see, but i find it clearer nevertheless, can i make it an option? 20:23
svnbot6 r10004 | fglock++ | PG-P6 - small fix in 'angle' parsing
fglock pmurias: sure 20:24
audreyt: the rules for parsing angles and slash are not accessible to the user, right? since they are defined in the lexer 20:26
20:26 Blicero_ joined
fglock at least in PG-P6 20:27
rgs wow, another pynchon addict in sight ?
Blicero_ yes
fglock rgs: pynchon?
20:28 hlen joined, KingDiamond joined
rgs fglock: a writer that might be popular among perl people -- several mongers I know love him 20:28
fglock :) 20:29
Juerd pynchon looks suspiciously like python 20:30
20:31 PolettiX joined
pmurias fglock: i'll bring in p6dump.pl and interface.pl from lrep 20:32
20:32 PolettiX is now known as froh-doh
pmurias how should they be named? 20:33
fglock how about p6parse.pl ? rename the current perl6.pl to something more internal like test.pl 20:35
lichtkind i thought again about that variable base in perl6 how do display 33:22323120 ? 20:37
fglock pmurias: I've got ubuntu running again - this should reduce the line-ending problems :) 20:38
pmurias p6dump is a dumping utility library, interface handles command line option (Getopt::Long) 20:39
fglock: have fun with ubuntu 20:42
would lib/Util/Dump.pm and lib/Util/Interface.pm be good names? 20:43
svnbot6 r10005 | fglock++ | PG-P6 - TODO, doc updates
fglock pmurias: how about Pugs::Util::* ? 20:45
pmurias should the have a seperate directory under Common 20:46
?
fglock if these are generic modules (not PG-P6 specific), they should go in Common/Pugs-Util/
20:46 rhett joined
pmurias then i'll clean the up a bit and commit them, should Getopt::Long be used? 20:48
fglock yes
please include Pugs-Util in the 'use lib' 20:49
20:50 larsen joined
TimToady audreyt: your S06 snippet is fine. I'm wondering if the generic Capture.as(Scalar) somehow returns the most generic scalar, so prefers Any > Object > String > Num > Int or some such, rather like a P5 scalar can have multiple cached values but one of them is the "real" value. 20:51
audreyt: sweet dreams and happy birthday while we're at it.
fglock TimToady: is the lexer the right place to make the '<'/'<a>' distinction? (it is not user-modifyable) 20:54
20:55 hlen joined
stevan obra: ping 20:57
lichtkind audrey has birthday?
obra pong
stevan obra: am I correctly assuming from audreyt's recent blogpost that the dorms will be available post-conference as well? 20:58
obra huh. I know nothing.
josh hasn't talked to me yet
stevan obra: ok
just checking :)
TimToady fglock: that depends on what you count as part of the lexer. The bottom-up parser knows when it's looking for a <%infix> vs <%prefix> vs <%postfix>, so only those tokens are active that would be valid at that spot. 21:03
(I oversimplify the hash stuff slightly there.)
It's more like: 21:04
<%infix> vs <%prefix|%term|%circumfix> vs <%postfix|%postcircumfix>
assuming we adopt the new <%a|%b|%c> notation to combine longest-token processing of multiple hashes. 21:05
21:06 theorbtwo joined
svnbot6 r10006 | pmurias++ | Pugs::Utils provide utils for the Pugs::* modules 21:06
r10006 | pmurias++ | The provide:
r10006 | pmurias++ | - data dumping
r10006 | pmurias++ | - option parsing
pmurias good night 21:08
sleep&
fglock the bottom-up parser can implement the '|' part, so no problem I think
21:09 KingDiamond joined
TimToady fglock: for speed one could cache all the hash keys for all the hashes in a trie or some similar structure. Just have to be careful that longest key wins regardless of hash, and in case of tie first hash wins. 21:13
'course you have to recalculate if any of the hashes is modified...
fglock yep 21:14
TimToady can probably treat alphanumeric sub names specially so that you don't have to recalculate on every sub declaration. 21:16
if you assume that no "foo" prefix operator or term can match if the next char is alphanumeric. 21:17
21:18 meppl joined
TimToady maybe just run the prescanned identifier down a different trie than the non-alpha ops. 21:18
actually, if you know the length then the ident one doesn't need a tree. Just a hash would work. 21:19
since you know its length already.
21:19 FurnaceBoy_ joined, izut_ joined 21:21 ruz joined
fglock TimToady: what if both postcircumfix and infix are expected? then the op is chosen based on if there is whitespace or not? 21:26
like in %ENV<x> vs. %ENV <... 21:29
TimToady <%postcircumfix|%infix> is what you look for before whitespace, and <%infix> after. 21:31
that's why we completely outlawed whitespace before postfix.
hmm, that doesn't quite work. 21:32
I think at postfix location you actually look for <%postfix|%postcircumfix>|<%infix> becuase
you don't want the %infix participating in longest token there. 21:33
$x<=2 is an error, but $x <= 2 is okay.
or looking at it in terms of whitespace, if you don't get any match on a postfix, then you can pretend there was whitespace even if there wasn't, and try %infix. 21:35
meppl gute nacht 21:36
fglock I think I'll need to do some tests ... - how about /rule/ vs. division? is it just that rule is a term and division is an op?
TimToady yeah, that's just simple term vs op expectation. 21:37
just as in P5.
fglock nice
TimToady It's really only the postfix category that's new to P6
well, plus a few other things.. :) 21:38
theorbtwo TT: So you can use spaceless infix if it doesn't conflict with a postfix? 21:44
That's something, at least.
I'd really like it if C<< if ($x<5) {...} >> could DTRT. 21:45
fglock but it can even conflict with a postfix in another package, since the precedence table is global (or so I think)
theorbtwo ...but being able to $x+1 is at least something...
TimToady yes, it's not a big problem with most operators, but anything in the postcircumfix category really has to be pretty strict about that. 21:47
Otherwise you end up with the very problem Pugs is currently having of backtracking an arbitrary amount. 21:48
And to be fair, this is something we recognized going in to the great bracket shift.
21:48 theorbtwo joined
TimToady so we knew that $a<$b was going to be a casualty. 21:48
Juerd I'm afraid I can no longer convince myself that Perl 6 is still Perl.
Because of the reference->Capture thing. 21:49
I like the change, don't get me wrong.
TimToady Just think of a Capture as a really FAT reference.
Juerd I do, but it's so much more complex that it just isn't Perl anymore. Perl isn't complex in every aspect. Its complexity comes from combining simple building blocks. 21:50
Perl 6, however, is complex by itself.
TimToady It's just a reference that can refer not only to an individual thing but also to the relationships of several things.
webmind sounds complex.
TimToady today your day to panic? :-)
Juerd I like both, but this has made me realise the most important difference between Perl 5 and 6. It's not about syntax, it's not about what the language can be used for, it's not about features... To me, Perl is Perl because of how it handles complexity. 21:51
TimToady most of the time people will use Perl 6 exactly like they use Perl 5.
Juerd TimToady: Most of the time, people use all programming languages exactly alike.
In that respect there's little difference between moving from PHP to Perl, or from Perl 5 to Perl 6, or from C to Perl. 21:52
TimToady As with closures, a capture is something that we can hide from newbies till they're ready for it.
Juerd So that, to me, isn't where a language gets its identity from.
I appreciate that.
And I don't *mind* that Perl 6 isn't Perl. I just don't think I can defend that Perl 6 stays Perl, anymore. 21:53
theorbtwo Ah, but I think one of the great beuties of Perl is that it's all out there in the open. We don't hide closures or references away in perl5, really.
Or, for that matter, symbol tables.
TimToady Depends on what you mean by "Perl" of course. I think Perl 6 is *more* Perl than Perl 5, but I'm thinking of how it works, not any particular surface manifestation. 21:54
Juerd I could easily do so a few years ago, and it got harder over time, to the point that during the German Perl Workshop all I could say is "Well, Larry decides" instead of something related to both languages...
wolverian on that note, is there a reason why we can't reformulate 'want' with return type mmd? i.e. get rid of the idea of context altogether.. although maybe that would make flattening impossible. not sure
Juerd But the Capture objects have made me realise WHY I have trouble following the mantra.
TimToady: Yes, and apparently I define what's Perl by the location of complexity. 21:55
21:55 reezer joined
Juerd And that's probably why I think Ruby feels Perlish, while Python and PHP do not. 21:55
Still, though, for any random project, I prefer the Perl 6 way. 21:56
TimToady I can kind of see that. Python and PHP both have a "one size fits all" mentality. 21:57
Ruby and Perl don't.
I would argue that Perl 6 still doesn't have a one-size-fits all mentality.
Juerd But I fear that Perl 6 will be, even more than Perl 1..5 have ever been, a language for experts
TimToady but in trying to find the right general structures underneath, it can certainly look that way.
spinclad audreyt: Many Happy Returns of the 10000! 21:58
Juerd Though "fear" is inappropriate, because I kind of like the elitist touch.
spinclad This March Up-country has taken 1 yr 2 mo 17 days (more or less) to reach 5 figures.
fglock later &
svnbot6 r10007 | fglock++ | PG-P6 - added assorted fixes to TODO list
21:59 fglock left
TimToady One might almost say that Perl 6 is an experiment in trying to keep both elitists and hoi polloi happy simultaneously. 21:59
Remains to be seen how successful that is...
theorbtwo The problem is that we seem to keep finding new layers and exposing them. 22:00
In p5, there's a pretty clear deliniation in the layers. These are visible, these you use B to mess with at your own peril. 22:01
TimToady We're trying to nail down a precise semantics. Just because we're exposing those layers to ourselves here doesn't mean that ordinary people will ever have to think about them.
webmind Juerd, a langauge for experts sounds like it'll haver a different audience ? like perl5 now is used by a lot of admins.. who don't do much more then script.. althouh sometimes the 'scripting' gets caried away
Juerd TimToady: That's a dangerous misconception, I think. When it exists and is exposed by default, it will be used, and people will have to understand it in order to read/maintain code. 22:02
masak happy birthday, audreyt
& 22:03
TimToady yes, that is the one problem of P5 we can't fix with this approach.
22:03 iblechbot joined
TimToady on the other hand, if the machine actually understands the semantics, 22:03
it has a much better chance of being able to explain what's going on
when the naive user waves his mouse over the unfamiliar construct. 22:04
Juerd TimToady: My experience with helping people learn IRC is that literally no-one learns first, and then starts doing things with other people's code.
22:04 Limbic_Region_ joined
Juerd TimToady: It's something we can't fix, but we are making it worse. Whether that is a problem, does indeed remain to be seen. 22:04
22:05 Limbic_Region_ is now known as Limbic_Region
TimToady you at least have to give us credit for huffmanizing the complicated things longer, unlike in Haskell, where the completely abstruse things are the shortest. 22:05
Juerd And I do
TimToady That's why Capture and Signature have such long names. :)
And you'll notice our metasyntactic categories are much longer than things like quote: or prefix: 22:06
Juerd But at the same time, I think huffmanization severely failed regarding the .+ and .* operators, to name one example.
TimToady possibly. remains to be seen whether those are useful in some newer "next method" paradigm. 22:07
but I don't regret trying to move away from "super" semantics.
Juerd Oh, another thing - now that we do not have references anymore, and a $foo holding an Array is practically the same as @foo being an array, what's the function of a sigil? 22:08
Is what it returns in list context a side effect, or the primary function?
($ => one item, @ => all elements (possibly ordered), % => pairs)
TimToady It says whether you are *thinking* of it in the singular or plural.
Juerd That works for $ versus @, but not % 22:09
TimToady the @ vs % distinction is whether you're thinking about it as ordered or unordered. 22:10
Juerd So a set would get %?
22:10 FurnaceBoy joined
Juerd And % has nothing to do with pairs, per se? 22:10
TimToady the keys of a % can function as a set.
Juerd Yes, but that's not what I mean
I'm not sure I can better express what I meant, though :)
TimToady more like the keys of @ are implicitly numbers. 22:11
azuroth priow
wolverian it feels to me like we have a rubyish type system under the perl5 container system, or something
Juerd I don't think %foo.push(15) makes sense or feels natural 22:12
buu Juerd: What would that do?
Juerd That's why I think % has to do with kv pairs, while @ does not. The most apparent way this is exposed, though, is how things behave in list context
buu: That I don't know. :)
buu: Which is my point
buu Juerd: Heh, fair enough. I would think something like %foo.push( key => value ); would make a mild amount of sense.. 22:13
FurnaceBoy right. the first is just a value without a key?
Juerd buu: No, not at all; it only makes me want to ask lots of questions.
buu: Like: what happens if $key already exists?
buu: And, is %foo ordered?
buu: And... is %foo really a PHP array hiding in Perl space? 22:14
So I wouldn't *want* push on a %foo, because I associate it with a whole different set of semantics
But that association may be wrong. I'm trying to find that out. 22:15
buu Juerd: Well, no, I don't really weant a push either
theorbtwo Indeed. AFACS, the sigil is more or less meaningless these days.
buu I was just suggesting a possible interpretation of .push on an array.
Juerd (Also, note that "push @foo, $bar" feels INCREDIBLY unnatural to me these days)
azuroth maybe on a multi...hash...
Juerd theorbtwo: So it could be useful to explain it using list context. $foo and @foo's only real difference is list context behaviour. 22:16
(AFAICT)
-- If both are an Array.
theorbtwo But I don't think that's a difference between $foo and @foo, but...
Is it?
Juerd Well, @foo flattens in list context (evaluates to a list of its elements), while $foo stays the Array object.
theorbtwo I thought if you did my Array $foo vs my Array @foo, they did the same thing in list context.
Juerd No. 22:17
$-sigilled things are always one thing, even in list context.
And that's incredibly useful 22:18
Because otherwise you could never have a list of arrays.
Hm.
List of arrays @foo and @bar ... how does that work nowadays?
Used to be @two_elements = (\@foo, \@bar);
Still sane?
22:19 Khisanth joined
Juerd Or do we think of that as @two_elements = ($@foo, $@bar); now? 22:19
Where "$" could be explained as "don't flatten", like the "@" in @$foo means "flatten"
22:19 Khisanth joined
Juerd (Then I'd also expect @%foo to mean %foo.values, and %$foo to mean $foo.kv) 22:20
TimToady: What is the list-of-arrays construction syntax now, given named arrays @foo and @bar? 22:21
TimToady (\@foo,\@bar) still works fine. 22:22
Juerd Okay 22:23
But then you have a Capture, not an Array, in positions 0 and 1 22:24
So it'd be different from my $foo = @foo; my $bar = @bar; my @two_elemens = ($foo, $bar)
TimToady A Capture that contains only a P6 array is pretty much indistinguishable from a P5 Array reference.
theorbtwo TT: my @foo = (1, 2); $x=\@foo; @foo.push(3) 22:25
What's $x? Is it still \(1,2), or is it \(1,2,3)?
TimToady the assignment just copies the values 1 and 2 into the array, just like in P5. 22:26
theorbtwo Read the rest of the question?
Juerd TimToady: Yes, but how would you express the array itself in list context, so that you'd have a list of array objects, not a list of capture objects?
TimToady the push does exactly the same as P5 push.
theorbtwo But does it effect the Capture? 22:27
Is that still really a reference, or is it a copy?
Juerd TimToady: I think theorbtwo's question is if \@foo captures @foo or its elemens.
TimToady I think it captures the array, not the elements. 22:29
But any list captures the array rather than the elements until you bind it.
when you say
foo(@bar, @baz) 22:30
you don't know yet whether @bar and @baz will be bound to scalars or slurpies.
the Capture list just as @bar and @baz in it as unbound arrays.
22:31 ruz joined
TimToady if you bind to (@x, *@y), you keep the identity of @bar and lose the identity of @baz 22:31
but that's a function of the binding, not of the Capture.
theorbtwo That's a very good thing, in this case. 22:32
I'm not so sure about the case where you're actually calling a function, but it's probably a slight win there too.
TimToady A Capture is all about "here's what I want to talk about" without committing to how you want to talk about them.
they really are references in some kind of profound linguistic sense,. 22:33
(too profound for me to understand entirely. :)
theorbtwo Hm, I could do with less profound and more simple. 22:34
References in perl5 are nice and simple.
Perl6 seems like an incredibly complex language.
TimToady I'm reminded of the English sentence: "That man is a woman". 22:35
theorbtwo There's a reason that we've decided that trying to program in English is stupid.
TimToady indeed. and Perl 6 ain't English. 22:36
theorbtwo That's true, but it's certianly orders of magnitude more complex then perl5. 22:37
TimToady don't think so.
azuroth are Captures really that much more confusing than p5-refs?
theorbtwo Yes.
TimToady the complexities are there in Perl 5, but they're kind of brittle. 22:38
spinclad my impression is that the existing complexities have been much rationalized and simplified; 22:39
TimToady fact is, P5 already has \($a, $b, $c), but it doesn't name the result, and tends to obscure the relationships as a mere list.
theorbtwo I never use p5's \($a, $b, $c). 22:40
spinclad OTOH there's plenty of new combinations of them to fill in the complexity field...
TimToady yes, we're trying to trade the unnecessary complexities for some necessary (or at least desirable) complexities.
azuroth you don't need to use p6's \($a, $b) either then ;-)
avar \($a, $b, $c) = [$a, $b, $c] right?
theorbtwo avar: No. 22:41
spinclad {away &)
theorbtwo \($a, $b, $c) is documented as being (\$a, \$b, \$c).
...but apparently Larry is saying it isn't.
TimToady I'm saying that (\$a, \$b, \$c) is a poor man's way of writing a Capture. 22:42
theorbtwo And I'm saying that we have arrays and references, I don't see why we need a special array of references.
Even worse, an arrayrefhashrefmonser. 22:43
We seem to be building simple things from complex things instead of the other way around.
Juerd theorbtwo: Captures are symbolic references in the most pure form, and that makes them nice again.
theorbtwo So we only have symbolic references now? 22:44
Juerd Though I don't think I can explain exactly what I mean by that, that's how I think of them, and it makes me happy.
theorbtwo We've returned to perl4?
Juerd theorbtwo: Symbolic though evaluated back to the point of definition, at a later point in time.
TimToady no.
Juerd Maybe: symbolic references the way they would perhaps have been if closures had existed when symrefs were invented :P 22:45
TimToady it's symbolic in the sense that "I want to mean exactly what @foo meant at this point".
theorbtwo That sounds deeply, deeply evil.
TimToady that's precisely what a hard ref is doing.
hard refs are deeply deeply evil. :)
Juerd theorbtwo: No, deeply, deeply theoretically correct and practically useful :) 22:46
TimToady but our hard refs now capture the syntactic context of how @foo was being used at that point.
theorbtwo Except instead of going back in time and looking at what the name meant then, you figure out what the name means when you evaluate it the first time, and squirel away its meaning, not it's name.
TimToady so we can know if @foo was being used as the invocant, for instanc.e
Juerd theorbtwo: If you have, in Perl 5, the closure sub { return @bar }, you can still decide on the context of @bar later, but the @bar at the time of the closure construction is used. 22:47
theorbtwo Juerd: Right.
Juerd theorbtwo: That's more or less what captures do, only without the closure.
And you can decide binding, instead of just context.
TimToady "...only without the cat."
Juerd TimToady: yea
That's what I was thinking
We need to come up with a good way of explaining this. We need comparisons to references, to pointers, to symrefs, to closures. 22:49
It's a bit of all of them.
Maybe not pointers.
Though references are of course just carefully encapsulated pointers. 22:50
theorbtwo And perl6 is just carefully papered-over transistors.
TimToady the paper is rather colorful though, kinda like the old Dutch money... 22:51
Juerd Ahh, how I miss the designs of our old paper money...
TimToady more like plastic, actually...
but yes.
theorbtwo It seems like Captures are a terribly complex thing. Every capture has 42 different sorts of bits in it, and is it an array as an invocant, or as a bunch of arguments... 22:52
Juerd Plastic?
theorbtwo In any case, the vast majority of captures only have one piece used.
Juerd It may be expensive and canvas like paper, but it's not plastic :)
TreyHarris i've read the Capture.pod a couple times, and it's starting to make sense to me, but perhaps not entirely. if I were implementing a linked list, would I use Capture objects to point my nodes at next and prev, or something else?
Juerd TreyHarris: A linked list?
theorbtwo sighs. 22:53
Juerd Really, have you ever cared about doing that in Perl, or any other programmer friendly dynamic language?
I find it hard to think in these terms even :)
TreyHarris: You could indeed use captures. Easily.
TreyHarris Juerd: I'm not suggesting it because I'd actually want to do it, I'm just trying to decompose the thing to first principles.
theorbtwo I'm not sure at this point if you can actually use anything /other/ then captures.
Is there anything else left? 22:54
Juerd Maybe captures can be explained as closures without code.
So closures that just refer to variables, not to code that's executed.
theorbtwo Does that make things easier to explain, or harder?
Juerd In terms of reference counting, a variable that's closed over is a reference.
It's just not an explicit reference. It's the same kind of reference a capture would have, I think. 22:55
TreyHarris theorbtwo: well, a Node object could have a prev and next Node attributes. but without creating a Node object, I think you're right.
Limbic_Region reads who is going to be at the YAPC::NA hackathon and he really really wants to go
theorbtwo Sigh.
I'm going to go to bed and watch an episode of West Wing. I'll be back in around 50 minutes, probably. 22:56
Juerd theorbtwo: Depends on the recipient. I think that the harder you try to understand it, the more magic you try to think of, and the harder it gets anyway. I let it alone for a weekend and today realised what it must be like. This means that our current documentation is not suitable for Perl 5 coders yet.
Because realisation should come at the moment of reading
Though postponed realisation is quite appropriate when it comes to captures :) 22:57
Limbic_Region heh
;-)
Juerd It's like string eval in a closure, but without the closure and without the string eval. 22:58
Darn, this can be explained in so many ways that do not involve any cat.
bsb P5 has globs, they're Capture like in complexity (backlogging) 22:59
Juerd I disagree.
TimToady it's the deferred interpretation of an utterance till you know how it's going to be used.
Juerd They're capturelike in complexity of use, but not in complexity of understanding :)
(I think)
Limbic_Region TimToady - so they're Schrodingerish 23:00
TimToady only without the cat 23:01
Juerd New word: catlessness
TimToady just the smile.
theorbtwo Juerd: Thank you for the string eval of closure idea.
Limbic_Region no matter how we try to get quantum mechanics out of p6 (superpositions to junctions) we just can't avoid
Juerd theorbtwo: Did it help?
theorbtwo I now understand how they're better then references.
Juerd theorbtwo: Or just make you smile? :P
theorbtwo (And how to fix the problem I had earlier in the day -- where I need a string eval with a closure, or perhaps vice-versa.) 23:02
(Converting zcode's version of symbolic references to perl5.)
TimToady "Smile when you say that." --the Virginian
Juerd Okay, that's good to know.
Then I have one explanation that works, at least for you.
bsb The resonance between Captures, Signatures, param passing and the $/ also help to understand, just need bootstrapping
Juerd That's very Perl 6 minded, "just need bootstrapping". 23:03
TimToady most people will just cargo cult it.
and that's fine to begin with
Juerd In other communities, people hide when they read "bootstrap". Here, it's considered normal and possible.
theorbtwo Juerd: They still seem unneccessarly complex. 23:04
bsb Bootstrapping understanding would probably be via param passing analogies "X is just a Y"
a la P5's OO
theorbtwo Just slightly better, and that problem with p5 references can be fixed without reinventing globs.
TimToady A Capture is just a bag of roles that...
Juerd theorbtwo: They are complex. But it's knowledge you learn ONCE, and can then use for binding, subroutine arguments, and the things you've always used references for.
theorbtwo Really going up now, popcurn finished.
Juerd TimToady: Only without the bag? ;)
theorbtwo But references aren't like subroutine processing. 23:05
bsb A capture is just $/ looking at your arguments...
TimToady no, the bag is without the popcorn, the popcorn is within the bag
theorbtwo You can always unify two difficult concepts by making a new concept that is more difficult then either of them.
Juerd theorbtwo: Because references are so limited. If all you have is references, then every problem looks like a nail. Or something like that.
theorbtwo Bah, now I've lost my DVD! 23:06
FurnaceBoy me too
TimToady just sit down and eat the popcorn. The DVD will eventually become self-evident.
Juerd theorbtwo: This concept isn't more difficult. It's the same thing, only wrapped in a closure-like thing so that it can be used independently of syntax. 23:07
bsb TimToady: Captures/Sigs are going to be used for object matching Rules right? Filling in the missing bits eventually
Juerd And independent of the point in runtime.
And --ooh, nice-- serializable. Perhaps. 23:08
TimToady bsb: sigs can match objects, and a capture is just one kind of object.
Juerd theorbtwo: Indeed it's complex. "too" or not depends on the person. To the average PHP-minded programmer, they will be far too complex. But they don't maintain code, they copy/paste it without understanding. 23:09
TimToady probably closely related to whatever kind of object you get out if you try to reverse the procedure.
Juerd ayk
afk
s/ayk//
bsb night all 23:11
FurnaceBoy n8
23:29 justatheory joined