Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-02-22

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:05 Khisanth joined perl6
00:30 vel joined perl6
01:13 nothingmuch joined perl6
01:13 Maddingue joined perl6
01:13 stennie joined perl6
01:13 Kattana joined perl6
01:13 orafu joined perl6
01:13 blm joined perl6
01:13 qwacky joined perl6
01:13 meppl joined perl6
01:13 integral joined perl6
01:13 Supaplex joined perl6
01:13 ycheng_ joined perl6
01:13 jvoorhis joined perl6
01:14 kane-xs joined perl6
01:14 Bit-Man joined perl6
01:14 perlbot joined perl6
01:14 chihchun joined perl6
01:14 qmole joined perl6
01:14 whiteg joined perl6
01:14 mugwump joined perl6
01:38 meppl joined perl6
01:50 vborja joined perl6
02:16 Cryptic_K joined perl6
02:30 sapper joined perl6
02:37 sapper left perl6
02:56 cognominal joined perl6
03:02 hcarty joined perl6
03:03 hcarty left perl6
03:10 Cryptic_K joined perl6
03:18 Cryptic_K joined perl6
03:18 stevan_ joined perl6
04:01 beppu joined perl6
04:09 Amnesiac joined perl6
04:45 sapper joined perl6
04:48 immie joined perl6
04:48 immie left perl6
05:02 kisu joined perl6
05:23 nothingm1ch joined perl6
06:23 gaal kolibrie: oh, another thing: "Yet Another Haskell Tutorial" has a good presentation of monads leading up to Parsec
06:24 gaal it also has a few examples of running your own parser from the interactive haskell environment (hugs or ghci)
06:36 Cryptic_K joined perl6
06:47 iblechbot joined perl6
07:00 xinming joined perl6
07:08 justatheory joined perl6
07:18 lisppaste3 joined perl6
07:28 xinming_ joined perl6
07:49 f joined perl6
08:11 elmex joined perl6
08:34 GeJ joined perl6
08:50 drrho joined perl6
08:50 KingDiamond joined perl6
08:55 Arathorn is now known as Ara4n
08:58 marmic joined perl6
09:04 kane_ joined perl6
09:38 iblechbot joined perl6
10:08 rantanplan_ joined perl6
10:18 elmex joined perl6
10:24 gaal joined perl6
10:36 bsb joined perl6
10:42 nnunley joined perl6
11:03 svnbot6 r9106 | audreyt++ | * Unbreak the precedence operator parser from incorrect application
11:03 svnbot6 r9106 | audreyt++ |   of Schwartzian transform: longest tokens should be tried first,
11:03 svnbot6 r9106 | audreyt++ |   not last.  Reported by lwall.
11:08 nothingmuch joined perl6
11:14 r0nny joined perl6
11:15 r0nny joined perl6
11:49 kisu joined perl6
11:56 elmex joined perl6
12:07 KingDiamond joined perl6
12:11 chris2 joined perl6
12:25 theorbtwo joined perl6
12:30 svnbot6 r9107 | bsb++ | Added haddock-broken make target to get process files individually
12:30 svnbot6 r9107 | bsb++ | (linking between files is lost)
12:40 rantanplan_ joined perl6
12:48 svnbot6 r9108 | gaal++ | * Pugs.Prim.Eval - attempt to load the precompiled version of a
12:48 svnbot6 r9108 | gaal++ |   module before parsing the Perl 6 source, if it is found in the same
12:48 svnbot6 r9108 | gaal++ |   directory as the source.
12:48 svnbot6 r9108 | gaal++ |   Caveats: symbols are not being imported correctly yet; and the
12:48 svnbot6 r9108 | gaal++ |   cache design is still being experimented with.
13:00 svnbot6 r9109 | fglock++ | iterator_engine - tests are now in a separate file
13:01 fglock joined perl6
13:17 iblechbot joined perl6
13:21 svnbot6 r9110 | bsb++ |  r585@rex:  bsb | 2006-02-22 15:18:34 +0200
13:21 svnbot6 r9110 | bsb++ |  Parsing CODE as a ruleBlockBody, and Eval-ing as not implemented
13:26 drbean joined perl6
13:35 spinclad gaal: re r9108, would it make sense to compare their timestamps as well (portable?) ?
13:44 drbean left perl6
13:54 svnbot6 r9111 | bsb++ |  Sketch code and commentary for CODE splicing
14:01 Qiang joined perl6
14:10 gaal spinclad: in a word, yes, but we're thinking of a hashing scheme which is also robust against pugs internals change
14:38 vel joined perl6
14:46 svnbot6 r9112 | fglock++ | * iterator_engine - all tests pass so far - alternation, grouping,
14:46 svnbot6 r9112 | fglock++ | greedy match, backtracking
14:58 svnbot6 r9113 | fglock++ | iterator_engine - moved experimental pge_P6Rule.grammar to a new file
15:09 nothingmuch joined perl6
15:09 nothingmuch seen luqui
15:09 jabbot nothingmuch: luqui was seen 24 days 7 hours 22 minutes 37 seconds ago
15:13 bsb joined perl6
15:13 sapper joined perl6
15:14 sapper join /#ai
15:26 dvtoo_ joined perl6
15:35 s7n joined perl6
15:36 Amnesiac joined perl6
15:45 stevan_ mmmm, generators in JS http://ajaxian.com/archives/the-future-of-javascript-an-update-from-brendan-eich
15:46 audreyt oooh
15:46 audreyt hey stevan_
15:46 stevan_ heya audreyt :)
15:46 * audreyt has committed a lot of Synopsis changes
15:46 audreyt more on the way
15:47 nothingmuch oh, audreyt please look at my synopsis half-patch too
15:47 * stevan_ wonders if audreyt is working on her tan while in .il :P
15:48 audreyt well yeah, I took a walk :)
15:48 audreyt stevan_: I cornered lwall with the "class but undef" dilemma
15:48 audreyt and we now have a complete operational semantics!
15:48 stevan_ oh oh,.. do tell
15:48 audreyt my Dog $fido .= new; # now works Just Fine (tm)
15:49 audreyt ok. the upshot is that "my Dog $fido" desugars to
15:49 audreyt my $fido;
15:49 audreyt BEGIN {variable($fido).add_class_constraint(::Dog);}
15:49 audreyt BEGIN {$fido = ::Dog}
15:50 audreyt now, ::Dog.meta is the metaclass
15:50 stevan_ hmmm
15:50 audreyt and ::Dog is a dog prototype
15:50 audreyt so far so good?
15:50 stevan_ yes
15:50 stevan_ similar to what we always talked about except that ^Dog is not ::Dog.meta
15:52 stevan_ hmmm,
15:52 stevan_ so in effect, my Int $num; becomes
15:53 stevan_ my $int;
15:53 stevan_ BEGIN { variable($int).add_class_constriant(::Int) }
15:53 audreyt yes.
15:53 stevan_ BEGIN { $int = ::Int }
15:53 stevan_ very nice
15:53 stevan_ I like the consistency there
15:55 stevan_ cant &add_class_constraint just be a method of Scalar?
15:55 stevan_ then we can remove the variable()  part
15:55 hexmode joined perl6
15:57 audreyt well, no, because variable() talks about the ocntianer
15:57 audreyt $int.foo always FETCH first
15:57 audreyt and then call .foo
15:57 audreyt but let me go on
15:59 audreyt ::Dog as a prototype object
15:59 audreyt has the .defined slot set to false
15:59 audreyt and consequently, boolifies to false as well
16:00 scw joined perl6
16:01 audreyt but it does take methods
16:01 audreyt and dispatches them using normal instance dispatch rules
16:01 audreyt this leads the the idiom
16:02 audreyt method meth { self ?? self.class_method !! self.instance_method }
16:02 * stevan_ is on a conf call,.. sorry :)
16:02 audreyt if you really want to test if something is an object, don't use .defined, use .id
16:02 Juerd audreyt: Wouldn't self be a class in case of a class method call?
16:04 justatheory joined perl6
16:05 audreyt Juerd: no, self is a prototypical object
16:05 audreyt the class is always in self.meta now
16:06 Juerd I see
16:06 Juerd Are prototypical objects false?
16:06 scw joined perl6
16:06 Juerd Oh, NOW I get what you said before
16:06 Juerd Nevermind :)
16:10 audreyt ok :)
16:12 scw joined perl6
16:13 audreyt some more news (already checked in):
16:13 audreyt $x = sub foo { ... } # valid
16:14 audreyt $x = my Int sub { ... } # valid, replaces a/an
16:14 audreyt same goes for "class" and "module" and "role"
16:20 KingDiamond joined perl6
16:27 iblechbot joined perl6
16:59 kolibrie gaal: thanks for the link to http://www.cs.uu.nl/~daan/download/parsec/parsec.html
17:09 chris2 joined perl6
17:11 vel joined perl6
17:15 Ovid joined perl6
17:23 svnbot6 r9114 | fglock++ | iterator_engine_p6grammar.pl - experimental implementation of a grammar
17:23 svnbot6 r9114 | fglock++ | that could parse pge/P6Rule.grammar - the grammar itself is compiled using
17:23 svnbot6 r9114 | fglock++ | iterator_engine_p6regex.pl
17:43 xinming joined perl6
17:50 svnbot6 r9115 | fglock++ | iterator_engine - alternation terms are given by an arrayref, so the
17:50 svnbot6 r9115 | fglock++ | grammar can now be modified at runtime
18:16 audreyt amazing revelation: ./foo is now spelled $.foo
18:16 audreyt (or @.foo, or %.foo, depending on the context)
18:16 audreyt s/context/context you want/
18:20 justatheory joined perl6
18:22 stevan_ audreyt: is that because we no longer have the $.bar public attribute twigil?
18:23 theorbtwo Waitasecond... method calls on self take the sigil of the type returned, but everything else takes the sigil of the type being used?
18:23 Khisanth hrm that is actually nicer, but what happened to implicit contexts?
18:24 Khisanth oh wait, nvm
18:24 theorbtwo We have @array[42] (takes an element of @array), but @.children (calls children on $self)?
18:24 theorbtwo ...and sin($pi/3) (runs a function on nothing).
18:27 audreyt also, pugs implemented $obj.foo.(1) as $obj.foo().(1)
18:28 audreyt while S12 explicitly required it to $obj.foo(1)
18:28 audreyt so this needs to change
18:28 audreyt and that will make
18:28 audreyt $.foo(1,2,3)
18:28 audreyt essentially self.foo(1,2,3)
18:29 audreyt theorbtwo: yes, because @.children is parsed as a variable
18:29 dethote joined perl6
18:30 audreyt stevan_: $.bar is a public attribute still
18:30 audreyt stevan_: but it's now virtual
18:30 audreyt and merely means calling self.bar in scalar context.
18:31 audreyt to access the attribute slot concretely, use $!bar
18:31 audreyt of course, if there's no subclasses, then $.bar and $!bar points the same thing.
18:31 stevan_ yup
18:31 stevan_ ok that works
18:31 audreyt so instead of in javascript where everything is slots
18:32 audreyt and methods are just slots with closures as content
18:32 stevan_ so attributes are virtual just like methods because the "normal" means of accessing them is actually desugared into a method
18:32 audreyt in perl6 it's the other way
18:32 audreyt everything is methods, and accessors proxies for concrete slots
18:32 audreyt outside the class body you cannot mention $!
18:33 audreyt $!x that is
18:33 audreyt so everything becomes virtual.
18:33 stevan_ cool
18:35 audreyt also, the old "use optimized :closed" thing which I was never comfortable with
18:35 svnbot6 r9116 | fglock++ | iterator_engine_p6regex - added a list of implemented/not implemented features
18:35 audreyt can now be spelled as... *rimshot*
18:35 audreyt pugs -O
18:35 audreyt ;)
18:35 stevan_ LOL
18:35 stevan_ BTW - the rimshot usually comes after the joke ;)
18:35 audreyt (and the cached bytecode would save optimized (closed/finalized) form and unoptimised form as two files)
18:36 audreyt okay, I stand rimshotted
18:36 stevan_ :D
18:36 KingDiamond joined perl6
18:36 audreyt stevan_: so, is the "class but undef" thing grokkable?
18:37 stevan_ audreyt: yes, I think
18:37 audreyt excellent
18:37 theorbtwo The phrase you were looking for was "drum roll, please".
18:37 stevan_ not for chromatics "average joe programmer", but they dont need to
18:37 audreyt theorbtwo: thank you
18:40 calanya joined perl6
18:41 Shachaf joined perl6
19:16 audreyt is now known as audreyT
19:17 audreyT is now known as audreyt
19:17 ingy hi audreyt!
19:18 audreyt greetings ingy
19:18 ingy it's been so long
19:18 ingy when do you land in Taiwan?
19:19 audreyt 17th I think
19:19 anatoly joined perl6
19:19 clkao audreyt: when do you land japan?
19:19 audreyt but I'm going to YAPC Chicago
19:19 audreyt clkao: right before the conference -- maybe staying a bit extended afterwards
19:19 ingy oh cool, me too
19:19 audreyt and I'm still thinking about OSCON
19:19 ingy yay
19:19 audreyt and/or Euro
19:19 clkao ah. i am staying beforehands
19:19 ingy audreyt: did you see my Jemplate?
19:20 audreyt ingy: no, not yet
19:20 ingy I ported TT2 to js
19:21 ingy http://blog.ingy.net/2006/02/jemplate_a_template_toolkit_fo.html
19:22 ingy audreyt: I also ported Test.Base to js :)
19:23 rantanplan_ joined perl6
19:23 KingDiamond joined perl6
19:38 svnbot6 r9117 | bsb++ | Bundle MissingH.FileArchive.GZip, dependencies and license
19:40 larsen joined perl6
19:51 justatheory joined perl6
19:53 svnbot6 r9118 | audreyt++ | * Mikhael Goikhman suggested that we add a GNU-configure-like
19:53 svnbot6 r9118 | audreyt++ |   configure script, much like perl5's configure.gnu, that
19:53 svnbot6 r9118 | audreyt++ |   accepts --long-options and writes a Makefile just as
19:53 svnbot6 r9118 | audreyt++ |   "perl Makefile.PL" will do.
19:53 svnbot6 r9118 | audreyt++ |   (the full translation layer from autoconf options to
19:53 svnbot6 r9118 | audreyt++ |    Module::Install options is for the later -- we are
19:53 svnbot6 r9118 | audreyt++ |    just committing a stub now for compatibility.)
20:03 audreyt ingy: wow.
20:08 ingy audreyt: :)
20:08 audreyt ingy: you outingyed yourself
20:09 ingy I got lucky
20:09 ingy TT2 was practically made for this
20:09 ingy abw++
20:09 * audreyt watches http://search.cpan.org/src/INGY/Jemplate-0.14/examples/features/templates/body.html
20:09 audreyt ==> http://svn.kwiki.org/ingy/Jemplate/examples/features/index.html
20:10 Juerd Hm, piping webpages...
20:11 ingy audreyt: and the Test.Base runtime tests: http://svn.kwiki.org/ingy/Jemplate/tests/index.html
20:11 nnunley I read Audrey's paste as '...Jemplate/extract' and thought, 'That was fast.'
20:11 nothingmuch audreyt: is this you
20:11 ingy hi nothingmuch
20:11 nothingmuch hi ingy
20:11 ingy nothingmuch: going to yapc?
20:12 nothingmuch nothingmuch: which?
20:12 nothingmuch err
20:12 nothingmuch ingy:
20:12 audreyt nothingmuch: you just outnothingmuched yourself
20:13 nothingmuch sub postfix:<∅
20:13 nothingmuch >
20:14 ingy nothingmuch: I'm going to Tokyo and Chicago at least
20:15 nothingmuch http://bash.org/?23396
20:15 nothingmuch ingy: i might be going to Chicago
20:15 nothingmuch ask stevan_
20:15 nothingmuch tokyo - no chance
20:15 stevan_ ingy: he will be going to chicago if we hire him by then ;)
20:17 nothingmuch that's 4 months from now you asshole
20:17 nothingmuch what does that mean?
20:18 ingy will nothingmuch move to usa if hired?
20:18 audreyt anatoly: http://www.haskell.org/arrows/
20:18 nothingmuch ingy: yes
20:18 ingy nothingmuch: w00t
20:19 ingy we can do some road trips
20:19 ingy seedy motels etc ;)
20:19 nothingmuch ingy: yeah
20:19 nothingmuch by bicycle though
20:19 * stevan_ starts writing the script for "Brokeback Perl Hackers"
20:19 nothingmuch =D
20:19 ingy nothingmuch: sure
20:20 ingy nothingmuch: I'm homeless these days so right on
20:20 * nothingmuch wonders if ingy is still interested in showering with audreyt post runtime casting?
20:20 nothingmuch why homeless?
20:21 * stevan_ would think it would make that shower much more "intersting" now
20:21 ingy nothingmuch: because I have no home
20:21 ingy qed
20:21 nothingmuch ingy: i didn't ask "why are you calling yourself homeless"
20:21 nothingmuch i asked why are you homeless
20:22 ingy nothingmuch: I'm not sure
20:22 ingy it's a weird question...
20:22 ingy it's just that way...
20:23 justatheory joined perl6
20:23 ingy my home is on the Net
20:23 ingy dot Net = dweller of the Net
20:23 obra "What's your home address block, baby?"
20:23 ingy :)
20:24 ingy I think having a home is just like a scab that healed and fell off
20:25 ingy so wondering why I don't have a home is like wondering where the scab went
20:25 obra ingy: where's your car parked?
20:25 ingy it's insignificant
20:25 ingy obra: Portland, and my mail goes there too
20:26 obra *nod*
20:26 obra you know you can get a mail->email gateway?
20:26 ingy really?
20:26 obra yeah.
20:26 obra I'll try to dig up the url
20:26 obra they scan and email everything
20:26 ingy thanks
20:26 ingy msg it to me
20:26 obra and will optionall mail you a CD each year
20:26 ingy cool
20:29 TMTOWTDIt left perl6
20:29 clkao ingy: but you have a scooter!
20:30 nothingmuch anatoly: http://feather.perl6.nl/~nothingmuch/harrorth/
20:31 nothingmuch anatoly: specifically: http://feather.perl6.nl/~nothingmuch/harrorth/doc/04.kwid
20:34 vborja joined perl6
20:35 audreyt gaal: http://perlcabal.org/~autrijus/tmp/DrIFT.tgz
20:35 audreyt (the Pugs-DrIFT sdk -- extract it in the updir of pugs)
20:36 integral audreyt: oh, I use DrIFT's own darcs for pugs,  is that one different?
20:36 audreyt integral: not at all -- this one is just with symlinks
20:37 audreyt (to our UserRules)
20:37 integral oh, interesting.   I wonder how mine is actually working then ;-)
20:37 audreyt it might not be ;)
20:38 audreyt (because we check in the drifted output to the src tree)
20:38 audreyt (so other developers won't need to -- unless you touch .hs-drift files)
20:38 integral I was touching them :)
20:38 integral I was fiddling with changing VStr to a FPS,  but that's silly since FPS only does the first 256 unicode codepoints
20:39 audreyt not that silly though
20:39 audreyt unicode semantics only applies when you are asking .chars
20:39 audreyt and we can decodeUTF8 then
20:39 audreyt and only the
20:39 audreyt n
20:41 integral but surely there's other code paths that compare chars, search strings, etc other than .chars?
20:42 audreyt in .substr
20:42 audreyt and .index, yes
20:42 audreyt but those were using fromVal anyway
20:43 audreyt instance Value String where ... full unicode ...
20:43 integral okay, cool, I won't nuke my patch then :)
20:43 audreyt instance Value FastString where ... octets ...
20:43 audreyt contexts are a good thing :)
20:43 audreyt as long as the fromVal of String uses decodeUTF8
20:43 audreyt we are in good hands
20:43 integral ah, yes, I think I get the idea, I did have to write some new instances :)
20:44 audreyt just one instance... :)
20:44 audreyt (FastString)
20:44 audreyt which is identity anyway
20:44 audreyt and you have to fix the String instance to introduce a cast
20:45 audreyt but that's all :)
20:45 integral well I actually wrote the String instance since the existing one was a VStr
20:45 audreyt ahhhh.
20:45 audreyt right.
20:45 audreyt excellent, even better
20:45 * audreyt praises type synonyms
20:45 integral hmm, that URL for DrIFT above doesn't work :-/
20:46 audreyt s/perlcabal.org/feather.perl6.nl/
20:47 integral thanks! :)
20:47 xinming joined perl6
20:55 lumi audreyt: ping
20:55 nothingmuch lumi: just extend your leg
20:55 Juerd audreyt: Is perlcabal.org broken?
20:56 szabgab joined perl6
20:56 nothingmuch Juerd: she says it works for her
20:56 lumi I wanna be non-breaking
20:56 nothingmuch but i think her concentration is limited
20:56 audreyt lumi: pong
20:56 nothingmuch ah
20:56 * szabgab just looking around
20:57 audreyt sub f ($x) { BEGIN { say f(10) }; $x * 10 }
20:57 szabgab gaal ?
20:57 audreyt lwall: that's what I was generalizing
20:57 nothingmuch szabgab: on the phone with rasn
20:57 nothingmuch ran
20:58 szabgab ok bbs
20:58 gaal szabgab: hello
20:59 gaal szabgab: I have to go out in a few min
20:59 gaal to pick up ran
20:59 gaal can you /msg?
21:00 gaal brb
21:00 putter joined perl6
21:02 * putter should have just cleaned up the regexp spike, rather than aiming for clean&correct.  a bridge too far.
21:04 putter question: in p6, when parsing enters a regex, does $?PARSER change to something regex-y?
21:05 szabgab gaal: i am back
21:05 szbalint szabgab: hello. :)
21:05 szabgab szia
21:06 szbalint Hogy vagy? Ha jol latom nagyban hackeltek :P
21:06 szabgab En otthon vagyok, nem tudtam fenn maradni a hegyen
21:07 szabgab mennek mar aludni ha ez a gaal elokerul
21:07 szbalint Ah ertem.
21:08 szabgab en csak fuvaroztam oket tegnap
21:08 szbalint :))
21:09 Shachaf joined perl6
21:11 audreyt putter: hm, not sure
21:11 svnbot6 r9119 | audreyt++ | * don't use runghc; instead compile DrIFT as an executable and
21:11 svnbot6 r9119 | audreyt++ |   invoke it much as ./Setup.exe does.  Required by lumi because
21:11 svnbot6 r9119 | audreyt++ |   runghc is broken on OSX for DrIFT.
21:12 jeh_ joined perl6
21:12 * integral has been running make in the drift dir...
21:20 integral feather's popular tonight
21:23 svnbot6 r9120 | fglock++ | * iterator_engine_p6grammar.pl - added perl5 emitter (incomplete) -
21:23 svnbot6 r9120 | fglock++ | will generate a package with parsing subs
21:23 gaal szabgab: so am I, hellow
21:24 szabgab I am still here
21:24 szabgab trying to put together the picture I too in Nazareth
21:24 szabgab has Ran arrived then ?
21:25 anatoly he has, yes
21:26 fglock putter: ping
21:26 gaal szabgab: sorry, i must shut down my computer
21:26 gaal brb
21:27 szabgab So do I guess corectly  that he is without a car?
21:27 gaal left perl6
21:30 anatoly he's without a car
21:32 Juerd Oh, good that you mention it
21:32 Juerd rafl: My car's fixed
21:34 nothingmuch ingy: INGY!!!!!!!!!!!
21:34 svnbot6 r9121 | fglock++ | iterator_engine_pge_P6Rule.grammar.pl - obsolete, will be generated automatically
21:34 elmex joined perl6
21:36 putter re $?PARSER becoming regex-y, I think the answer is "possible, but unlikely".  I was confused.
21:36 svnbot6 r9122 | fglock++ | iterator_engine_p6regex.* - renamed iterator_engine_p6rule.*
21:36 putter fglock: pong
21:37 audreyt putter: a sec, I'll ask lwall
21:37 fglock putter: some progress today - simple grammar files will soon be compiled using a bootstrapped grammar
21:38 putter audreyt: no need I think.  I was confusing
21:38 putter grammar context in which one is running, vs tool doing the running.  I think.
21:38 gaal joined perl6
21:38 gaal rehi
21:39 szabgab re
21:39 gaal hey. can you /msg?
21:39 audreyt putter: what's the use case here?
21:39 r0nny_ joined perl6
21:40 audreyt for $?PARSER that is
21:40 putter fglock: neat.  I find myself going back and forth between "I hope fglock isnt wasting his time" and "I'm so glad fglock has something which actually works". ;)
21:42 fglock me too - I didn't plan to go so far. It is surprising that it works with just 15kb of code. perl5++
21:44 audreyt putter: lwall thinks $?PARSER stays the same, I think
21:44 gaal gabor?
21:44 szabgab yes
21:44 gaal can you do /msg?
21:45 szabgab I tried to /msg you but it seem it does not work
21:45 szabgab though I saw your ping
21:46 gaal you need to regiseter in freenode to send them. never mind, plese join #ad_hoc_msg
21:46 integral gaal: /chanserv set unfiltered on # allows you to receive any messages
21:46 gaal integral: thanks
21:46 fglock it is small enough that it can't be too difficult to translate to javascript :)
21:48 putter audreyt: No use case, I'm just puzzling.  I'm puzzling over p5's /x, and also regex termination chars (eg, the usual "/").  (?x) really switches you to a different grammar, though one with a lot of overlap with the default one.  One can handle it dynamically (local $we're_in_x_now).  One can handle it with grammar inheritance (grammar p5re_x is p5re {...}).  I'm trying
21:48 obra is its own repo
21:50 putter to get myself less fuzzy on how dynamic/static grammars, and rules they contain which care about their grammar context, play together.
21:50 szabgab left perl6
21:51 svnbot6 r9123 | bsb++ | Added list of names for the below (and recursive thoughts on recursive macros)
21:51 svnbot6 r9123 | bsb++ |  macro max ($x is wehavethunkevaluatereduceonceallassynonyms,
21:51 svnbot6 r9123 | bsb++ |             $y is wehavethunkevaluatereduceonceallassynonyms) {}
21:52 putter fglock: :)
21:55 audreyt hm, is no.perlcabal.org and perlcabal.org still unreachable?
21:55 audreyt (I just reset the DNS propagation)
21:55 * putter didn't mean to invoke hackathon instant-p6l @larry power.  ;)
21:56 putter audreyt: works for me (and it wasnt in my local cache)
21:56 audreyt k
21:59 audreyt thanks :)
22:00 putter fglock: yes.  I'm hoping we end up with things clean enough that spinning off multiple implementations is both easy and makes sense.
22:02 putter "so putter, why are you writing a regex engine?  putter: because I am tired of writing regex engines and hope to never have to do it again".  there's just something about that logic that seems questionable... ;)
22:04 putter fglock: I was thinking how much boostrap hassle was saved by having Regexp::Parser... but didn't use it, did you?  you bootstrapped from scratch?  fglock++
22:05 putter s/but/but you/
22:05 rafl Juerd: Yay!
22:06 rafl Juerd: Beds are booked.
22:06 putter lol
22:06 putter ahh
22:06 fglock putter: I used no modules but Test::More
22:06 putter :)
22:09 sili joined perl6
22:10 putter have you explored the p6 side of testing opportunities?  err, for p6 regexs?  sometime soonish I have to actually start running real p6 tests.  prehaps re_tests translated, or munged t/rules or parrot t/compilers/pge).  Wish there were Regexp::Testing and Perl6::Rule::Testing  modules. ;)
22:10 putter s/modules/module hierarchies/
22:12 putter I almost created Regexp::Test::ReTests, but the "is it of general interest?" cpan filter killed the idea.  :/
22:12 Juerd rafl: Nice; thanks.
22:12 Juerd rafl: Note that I have (on purpose) *not* asked anyone if it's okay to sleep in my office
22:13 putter :)
22:13 Juerd I've done it several times before, and it's no problem. It is a problem if you ask, though :)
22:14 putter i remember
22:14 larry joined perl6
22:14 putter (fuzzily)
22:14 fglock putter: it is not powerful enough for passing real tests yet
22:14 integral argh, type should be banned,  at least where newtype should be used :-P
22:15 fglock putter: but it could be used to parse tests out of the p6 suite and re-emit them to p5
22:15 audreyt larry: hi
22:16 Juerd Is this the real Mr. Toady? :)
22:16 nothingmuch nobody is panicking
22:16 nothingmuch yes, it is =)
22:16 Juerd Neat :)
22:16 nothingmuch audreyt: is explaining irssi to TheLarry =)
22:16 nothingmuch i doubt he will talk though
22:16 Juerd Hi larry :)
22:16 Juerd (Huh, the nickname "larry" was available?!)
22:16 Juerd (How does that happen on such a large network...)
22:17 putter fglock: that sounds... hard.  I was just wondering if you were an Xsomething fanatic... "of course I have a complete test suite, I've started coding the application haven't I?" ;)
22:17 audreyt Juerd: it's registered by someone else I think, just not currently logged on
22:18 Juerd I see
22:19 Juerd 23:31 -NickServ(NickServ@services.)-            Nickname: larry
22:19 Juerd 23:31 -NickServ(NickServ@services.)-          Registered: 1 year 19 weeks 5 days (22h 21m 5s) ago
22:19 Juerd 23:31 -NickServ(NickServ@services.)-           Last Seen: 1 year 18 weeks 2 days (21h 46m 42s) ago
22:19 Juerd That poses no real threat :)
22:19 audreyt indeed :)
22:19 szbalint TimToady is free
22:20 fglock putter: that's how it compiles grammars - it has a minimal "grammar grammar" that only understands [grammar|rule|pod]. It could be used to run "rule" tests with some tweaks
22:20 Juerd szbalint: I'd be much surprise if it were taken
22:20 SamB joined perl6
22:20 larry is now known as lwall
22:21 lwall is now known as TimToady
22:21 fglock putter: "grammar grammar" is compiled using "rule grammar", which is written by hand
22:22 audreyt cool, TimToady is registerable
22:22 audreyt (and registered)
22:23 audreyt TimToady: so next time, simply typing "irssi" should bring back this workspace
22:23 stevan joined perl6
22:24 audreyt stevan: rehi
22:24 fglock putter: re performance - match objects could be built by an emitter - so the internals of the rule-engine can remain unboxed
22:24 * TimToady wonders whether he has taken one step too far down the slippery slope.
22:25 anatoly you're definitely doomed.
22:25 fglock TimToady: welcome
22:25 audreyt fglock, putter: there's a    rule foo { 0x (\d+) { return Literal.new(:16($0)) } }   form now, which allows incremental build of captured objects from within rules
22:25 Blicero joined perl6
22:25 Juerd TimToady: Just try to not get addicted :)
22:26 TimToady fglock: thanks...I think...
22:26 putter oooooo, neat :)
22:26 TimToady Juerd: too late...
22:26 szbalint great :)
22:26 Juerd Oh, you're quick :)
22:26 audreyt putter: basically the {return} functions as a binding to $<>
22:26 audreyt which is the capture object (accessible as $<>, or ~$/, or +$/)
22:26 audreyt the latter two forms are stringified and numified versions of the capture object
22:27 audreyt so the match object carries a capture object
22:28 putter capture object?  something distinct from a match object?  (putter had been thinking it was matches all the way down...)
22:30 audreyt putter: it used to be that +$/ and ~$/ returns the actual capture
22:30 svnbot6 r9124 | audreyt++ | * chromatic reported that -optc-O3 didn't work on OSX.
22:30 audreyt in number of string context
22:30 audreyt it doesn't really do that by substr()'ing using .begin and .end
22:30 audreyt because the original string may change in the meantime
22:31 audreyt so they actually captures a copy of the substring that it matches
22:31 audreyt now TimToady relaxed it so that it can capture any objects
22:31 audreyt and call that capture object $<>
22:31 audreyt TimToady: it's not part of S05 yet, iirc
22:31 audreyt the $<> notation
22:32 audreyt but in any case, that's what gets bound when you say "return" inside an interpolated closure.
22:32 * Juerd lost his Wacom pen again. Why are these things wireless?
22:32 audreyt you can also explicit bind it using :=
22:32 TimToady audreyt: I haven't been the official maintainer of that lately...
22:32 putter ah, "capture object" as "match object currently being captured", now generalized to non-match objects?
22:32 audreyt putter: more like, match objects captured only substrings previously
22:32 audreyt but p6 is not tcl
22:32 sili doh
22:32 audreyt so it can now capture other things as well
22:33 rantanplan_ joined perl6
22:34 audreyt the match object maintains the begin/end positions; the named submatches; the positional submatches
22:34 audreyt _and_ a capture object
22:35 audreyt which is usually a substring of the original string
22:35 audreyt but can now be something else
22:36 mtk00 joined perl6
22:36 Juerd Are these substrings CoW?
22:36 Juerd (Or, well, reversed-cow)
22:36 putter audreyt: ah. ok.  the non-pugs Match objects (pil2js, spike, etal), already broke the substr out separately, but hadn't considered it as potentially non-string.
22:37 integral Juerd: if it's based on FastPackedString it should be possible
22:38 audreyt Juerd: what integral said
22:38 Juerd Because with nested captures, you're very quickly duplicating data if not.
22:38 Juerd Cool.
22:38 integral but currently I'm still in bodge mode with the VStr FPS stuff
22:42 putter I think all they need is a field name change to avoid being misleading.  The capture object seems still the right thing to return when stringification is requested.  And other than bool/str/array/hash-ification, they're are rather passive objects.  The post-spike MatchX2.pm is actually speced as an open api, with
22:43 putter match_hash etc fields, just because match trees become parse trees, and the runtime cost of going through overload when doing tree grovels, is prohibitive.  though perhaps now, it will be less likely for match trees to be parse trees?  hmm...
22:45 audreyt putter: I think the idea is to do as parsec does
22:46 audreyt namely the captureobj tree becomes the parse tree
22:46 audreyt not the match tree itself
22:46 audreyt which greatly simplifies things
22:46 xinming joined perl6
22:48 fglock audreyt: so what is returned by {<code>} becomes a node in the ast? what is the default, when there is no code?
22:49 justatheory joined perl6
22:49 audreyt fglock: the default is the captured string
22:49 audreyt "123" ~~ /123/
22:49 audreyt $<> is the Str "123"
22:49 audreyt ~$/ too
22:49 audreyt and +$/ is 123
22:49 audreyt makes sense?
22:50 audreyt $/ is the match object
22:50 audreyt which dispatches its ~ and + to $<>
22:50 Juerd Why does it do that?
22:50 audreyt which is shorthand for $/.{''}
22:50 avar joined perl6
22:51 Juerd Just because it can?
22:51 audreyt Juerd: also because that's what the user expects
22:51 audreyt at least p5
22:52 fglock rule{ (<ident>)++; { {increment=>$0,} } }  - would this work?
22:52 putter hmm, fglock, good question.   so {<code>} unavoidably binds $<> ?   { $0 < 256 or fail } sets $<> to "true"?  or  { return 3 } behaves differently than { 3 } ?
22:52 audreyt if $str ~~ /\d/ { say $_ * 100 }
22:52 audreyt putter: nono
22:52 audreyt just the exceptional "return" form
22:52 audreyt otherwise it's just used for the side effects
22:52 audreyt the "return" form pulls control out of the current rule
22:53 audreyt and immediately binds the capture object and matches
22:53 audreyt fglock: yes, you can refer to captures from within {code}
22:53 fglock rule{ (<ident>)\+\+\; { {increment=>$0,} } }
22:53 Juerd Okay, I think I just don't get what the benefit of the $/<> to $<> shorthand is...
22:53 audreyt Juerd: it's already so that $/<named> can be abbreviated $<named>
22:53 audreyt just like $/[10] can be called $10
22:53 audreyt this just generalizes that
22:54 fglock rule{ (<ident>)\+\+\; { return {increment=>$0,} } }  - right?
22:54 Juerd audreyt: Okay. I'll just assume that on some keyboards, / is awkward to type :)
22:55 putter so { return 3 } behaves differently than { 3 }, but there's more going on.  ... { return 3 } ...  is equiv... hmm, is this an entirely new control mechanism?  putter tries to think of an transformation to commits...
22:55 audreyt (note that $<> is short for ${''})
22:56 audreyt Juerd: oh and ./method is gone, and I'm finally happy for it :)
22:56 * audreyt is happy about $.method
22:56 Juerd audreyt: With self, I don't mind at all.
22:56 audreyt Juerd: it's now spelled $.method too
22:56 Juerd Oh, $?
22:56 Juerd I missed that
22:56 Juerd When did this happen? :)
22:56 audreyt and @.method, depending on the context you want
22:56 audreyt Juerd: I just commnitted to S12
22:56 * fglock must go :( &
22:56 audreyt 1.5hr ago
22:57 audreyt $.method(1,2,3)
22:57 putter fglock: &
22:57 Juerd But...
22:57 Juerd $.foo is also used for attribute variables.
22:57 audreyt putter: it's not... just as you are doing, rules are decomposed to methods
22:57 fglock left perl6
22:57 xinming joined perl6
22:57 Juerd And I'd expect $.foo() to call a sub(ref) stored in one
22:57 Juerd Is my logic old fashioned? :)
22:58 TimToady Juerd: yep
22:58 audreyt Juerd: $obj.foo.(3); is always specced as $obj.foo(3)
22:58 audreyt it's just I missed that ;)
22:58 TimToady $.foo(1,2,3) always desugars to self.foo(1,2,3) or some such
22:59 TimToady Even in the class $.foo is a virtual reference, and you use $!foo
22:59 Juerd TimToady: Ah, so access of an attribute variable is *always* done through its accessor?
22:59 TimToady for a physical storage ref, and that probably on in
22:59 TimToady only in submethods.
22:59 audreyt putter: anyway. rules are decomposed to code. "return" just escapes the dynamic scope with a value. a match method returns with the capture object, _and_ changes the $/ given to it
23:00 Juerd Hmmm... I need to purge parts of my memory and re-read documents.
23:00 putter audreyt: but this is the first time you can actually *see* those semantics, as opposed to them being implementation details.
23:00 TimToady juerd: only if you use the $. form.
23:00 audreyt putter: aye. but otoh, it makes it possible to say
23:00 audreyt grammar Foo { method bar { ... }; rule baz { <bar> } }
23:00 TimToady The $! form is expclitily non-virtual.
23:01 audreyt and allow bar to hook to (say) OpTable
23:01 audreyt or (say) PCRE
23:01 Juerd TimToady: Is $!foo the non-virtual variable that $.foo uses too?
23:01 audreyt or (say) antlr
23:01 TimToady the bare $x form also means $!x.
23:01 Juerd I think I get it :)
23:01 audreyt and I think it's rather nice :)
23:01 Juerd Does "has" still require the . twigil, then?
23:01 audreyt nope, you can say "has $x"
23:02 audreyt means same as "has $.x"
23:03 TimToady juerd: yes $!foo is the "real" $.foo
23:03 Juerd Ahh
23:03 Juerd Perfect!
23:03 putter audreyt: I dislike the semantics (I've always looked forward to having an inline/stays-open flavor regexs, that subsequent normal code can fail back into).  I'm just flagging this as a nontrivial change.
23:03 Juerd This is very close to what I silently wanted :)
23:03 TimToady It's actually been in the works for a while, but somehow didn't get into any synopsis...
23:04 audreyt putter: k.
23:04 putter re grammar Foo { method bar { ... }; rule baz { <bar> } }, are rules no longer in their own namespace?  or methods in grammars end up in that namespace?
23:04 TimToady I've recently hired a new ghostwriter, so things are moving faster.
23:04 Juerd I really like that there is no indication of duration in the variable name anymore.
23:04 Juerd What's a ghostwriter?
23:04 putter audreyt: OOPS, s/dislike/dont dislike/
23:05 TimToady Someone who actually does the writing, but I get all the credit.
23:05 audreyt <- that someone
23:05 putter (it was *dont* dislike, and i guess I deemphasized the "*dont*" but removing it.  oops)
23:05 Juerd Ah
23:05 cognominal recently in perlmonks someone wanted a qw() that supported comments, is there an idiom for that in perl6?
23:05 audreyt putter: yeah, I think rules are now specced to completely desugar to meths
23:06 Juerd cognominal: <<>>, IIRC
23:06 avar joined perl6
23:06 cognominal I was surprised not to see TimToady pushing a Perl6 solution :)
23:07 TimToady cognominal: I don't think we actually said anything about comments, but considering that it's "shell quoting", and shells have comments, they could sneak in there...
23:07 Juerd It could still happen
23:07 Juerd TimToady: But let's not have \\\n :)
23:07 TimToady Didn't see that PM thread...
23:08 audreyt shells have line-terminated comments
23:08 Juerd audreyt: That was implied :)
23:08 TimToady So put line breaks in.
23:08 * audreyt purrs randomly
23:08 Juerd 0:08 am. I should go home.
23:08 Juerd afk
23:09 audreyt my @x = <<
23:09 audreyt    This is some splitted words # but not this
23:10 audreyt    and this too # but not this
23:10 audreyt >>;
23:10 * putter scratches audreyt
23:10 cognominal I think the thread was recent, but a I found a similar one: http://www.perlmonks.org/?node=qw+comments&amp;go_button=Search
23:10 * audreyt ponders audreynip
23:11 putter audreyt: so, has there been any thoughts on what $_ and pos() desugar into?  hmm... though we may be all the way to no longer needing a "search state" "object"...
23:12 audreyt is there still such a thing as pos()?
23:12 audreyt oh, there is
23:13 putter think so, of the search, though not necessarily of some particular string (as in p5).
23:13 audreyt well, no, S05 stipulates it's still per-string
23:15 putter I'd been thinking $_ might be more than a mere string.  though some of the examples in S05 perhaps make that interpretation a bit strained.
23:16 audreyt indeed.
23:17 audreyt I think it's mere
23:17 audreyt do you have some specific interpretation in mind?
23:17 audreyt hm, anyone had experience setting up SVN::Notify?
23:18 audreyt (or any other system that tracks a svn and post mails)
23:18 szbalint commit notices?
23:19 audreyt yeah
23:19 audreyt I'd like to get the commits to the official spec repository to be posted to p6l
23:19 audreyt to facilitate discussion
23:19 audreyt and avoid the "the language changes silently" syndrome
23:20 ilogger2 joined perl6
23:21 putter non-desugared, I can make $_ be anything with the correct behavior.  desugared...  S05 doesnt actually show .pos called on anything but $_ .   if there were a $_posvar which got magic'ed into existence when a $_ did, and $_.pos was just sugar for $_posvar, then strings wouldnt have to carry single pos fields, to the bane of multi-threading and...
23:22 putter basically, if you cant scope the <string,pos> association, then...
23:22 szbalint hmmm, we use such stuff at work but it wasn't me who set it up, sorry. :\
23:23 putter I guess that's the key idea.  I want the association between a string and a pos to be scoped.
23:24 TimToady putter: the original idea was the $_ was the invocant/topic that was actually the current parse state proxying for the original $_.
23:24 TimToady So the original conception was, in fact, scoped that way.
23:25 putter right.  I'd been thinking the same thing.  but as desuggaring becomes a theme, I was trying to make the parse state go way...
23:26 TimToady I don't think you need to desugar $_ there--it really is $_ for that closure.
23:29 putter right.  $_ can be a parse state, in which case $_.pos is just a method, and desuggared code explicitly creates a parser state object from a string. (hmm, wonder how that interacts with eq...)  Or, $_ can be
23:30 putter a bare normal object, in which case $_.pos has to be desuggared to... something... since one doesnt want normal objects to have a concept of pos.  
23:30 audreyt wait a minute... I think $str.pos works
23:30 audreyt much like in perl5
23:31 putter does it?
23:31 TimToady audreyt: it shouldn't.  It should return an opaque position object.
23:31 audreyt TimToady: sure, but it's still per-string
23:31 audreyt putter:
23:31 audreyt       o   The ":c" (or ":continue") modifier causes the pattern to continue
23:31 audreyt           scanning from the string's current ".pos":
23:31 audreyt       o   The ":p" (or ":pos") modifier causes the pattern to try to match
23:31 audreyt           only at the string's current ".pos":
23:32 audreyt clearly it indicates a pre-string .pos
23:33 putter audreyt: unless "the string" is $_, the string currently being parsed.
23:34 putter but yeah, :c and :p would be rather less useful if not.
23:34 audreyt putter: according to timtoady, outside a parsing rule match
23:34 audreyt we can still get to arbitrary $str.pos
23:35 TimToady You want to be able to feed the output of $str.pos to substr, fer instance.
23:36 putter is there some way to ask a $str for a _new_, fresh, as yet unused opaque position object unassociated with any previously used/in-use?
23:37 putter that would do it, i think...
23:37 cognominal Sorry for the non sequitur: "the class does not need to declare C<has
23:37 cognominal $.foo> as a property -- a C<method foo> declaration can work just as well." does that mean that object can have methods a la javascript?
23:39 TimToady putter: sure, such objects are returned by things like index(), $42.pos, etc...
23:41 TimToady or more like $42.beg and $42.end.
23:41 Juerd I think it's wise to not give $42 a .pos
23:42 Juerd That is, if Perl still resets $42 on a successful match :)
23:43 putter so, given a $str, I can somehow create a $pos1 and $pos2.  so a next question is, since one usually says $str.pos, how does one switch back and forth between that meaning $pos1 or $pos2.
23:44 putter (hmm, though another path could be to create <str-pos> pairs, which look like $str, and... I'm not sure how that works out...)
23:45 Juerd putter: What are these $pos1 and $pos2?
23:46 putter (... doesn't get you random {my $s = "";  $s.pos}, so perhaps doesnt work out.)
23:46 Juerd (Maybe "pos" is a misleading name for a method indicating *current* position (as opposed to a specific position where a match starts, or any other arbitrary position), because the currentness is more relevant than the positionness.
23:46 Juerd )
23:46 putter Juerd: "is there some way to ask a $str for a _new_, fresh, as yet unused opaque position object unassociated with any previously used/in-use?" "putter: sure, such objects are returned by things like index(), $42.pos, etc..."
23:47 Juerd What has that to do with .pos meaning arbitrary position objects?
23:47 theorbtwo Juerd: $str.here?
23:47 Juerd theorbtwo: Or there :)
23:47 theorbtwo .pos doesn't mean an arbitrary position object.  That's presumably ::Pos.
23:47 Juerd theorbtwo: Though "here" is more consistent with historic error messages :)
23:48 Juerd <-- HERE
23:48 * theorbtwo nods.
23:49 Juerd I like here. It's unambiguous and in noun context still available in English :)
23:49 putter Juerd: the objective is to... oh, good question, to... retain {my $s="..."; $s.pos} in normal p6 code, while being able to directly manipulate the string-to-particular-pos-variable association, so that, for instance, two separate subs operating on the same $str could be using two distinct $str.pos'es.
23:51 theorbtwo I'm not real clear on why poses should be fullblown objects, and nonportable.
23:51 putter though $s.pos may perhaps give you a handle, not an integer, which is only useful within a desuggared regex.
23:51 theorbtwo (Esp the second bit.)
23:51 TimToady theorbtwo: they have to point between chars/graphs/codes/bytes smartly.
23:51 Juerd putter: temp $x.pos?
23:52 TimToady Integers are just wrong the moment you lose track of the "units" of a string.
23:52 theorbtwo Why can't that be 4+1/2?
23:52 putter :)
23:52 theorbtwo Hm, OK, there's more then two sorts of units.
23:53 putter Juerd: not enough,
23:53 Juerd I imagine that integers are more efficient, and possible if you fix the unit. Maybe a nice thing for an optimization module, that can introduce a certain kind of string that's always counted a certain way.
23:54 * putter pauses to think
23:54 theorbtwo So drop the "full objects" objection -- why do they need to not be portable between different strings?
23:54 theorbtwo I'd really like a sane way of handling 5degrees+27minutes+3seconds; this would seem to be similar.
23:55 Juerd theorbtwo: What's the point of making things that point to a certain position in a string, portable between strings?
23:55 theorbtwo "Get the thing directly under this on the next line."
23:55 Juerd How is the value of a position in $foo relevant for $bar, if $bar ne $foo?
23:56 Juerd theorbtwo: But there's a real problem there: what exactly is "directly under" it?
23:56 theorbtwo In a fixed-width font it has a clear meaning.
23:57 theorbtwo "The same number of graphs in."
23:57 Juerd theorbtwo: You'll need to specify if you want to have that charwise, graphemewise, etc... It's a matter of affixing ".chars", and in the rare case you need this, I don't think that's a bad idea.
23:57 theorbtwo Hm, OK, I'm alright with that.
23:57 theorbtwo ...if it makes things easier on the implementation.
23:57 Juerd theorbtwo: Is it? Many "fixed width" fonts have "full width" (as opposed to the default "half width") characters...
23:57 theorbtwo OTOH, I don't think it will.
23:57 TimToady You can always subtract two positions and get a quantity like "3 graphs".
23:58 putter Juerd: the key idea is that regex's have/had a bundle of "parser state" information.  like whether the unit being operated on were :bytes or :graphs, the string being parsed, the pos of the parse on that string.  what else?  as regexs become a thinner and thinner layer of sugar on methods, it gets nicer if the "parser state" could
23:58 Juerd theorbtwo: Implementation is complex, given all these different units. But if it must be done correctly, there's few alternatives. When speed is needed, a more simple datatype can perhaps be invented.
23:58 putter go away as a distinct cluster of info, and get spread out into normal p6.
23:59 TimToady It takes a functional programmer to think that splattering the state all over the call map is simpler than keeping it in one place. :)
23:59 putter lol
23:59 * theorbtwo chuckles.
23:59 * Juerd is a dysfunctional programmer :|

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

Perl 6 | Reference Documentation | Rakudo