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
|