The topic for #perl6 is: pugscode.org/ planetsix.perl.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, elf: etc.) (or perl6: for all) | irclog: irc.pugscode.org/
Set by TimToady on 25 November 2008.
TimToady @tell masak yes, p6 macros are hygienic, as long as they return AST and not text. quasiquoting provides a convenient way to return AST. 00:24
lambdabot Consider it noted.
literal @tell lambdabot you're useful 00:26
lambdabot Nice try ;)
pugs_svn r24110 | hinrik++ | [util/perl6.vim] vim compatability fix 01:49
meppl good night 02:05
ihrd hi there 04:05
I tring to implement HTML::Template using {*} 04:06
rakudo_svn r33329 | bernhard++ | [codingstd] remove trailing space 09:30
dr_df0 hi all 14:10
pmurias dr_df0: hi 14:18
dr_df0 pmurias: hi, is there a problem with rakudo in SVN?
pmurias: *I've* tried to compile the latest build and compiles ok, but fails to run on MacOSX 10.5 14:19
pmurias dr_df0: i have limited knowledge about rakudo and am totally ignorant about MacOSX 14:21
wolverian hmm, why is S07 not in the draft section of spec.pugscode.org? 15:52
rakudo_svn r33345 | pmichaud++ | [rakudo]: spectest-progress.csv update: 227 files, 4653 passing, 48 failing 16:30
r33345 | pmichaud++ | * Also a date correction reported by mj41++
slavik rakudo: eval("say 'hello'"); 20:58
p6eval rakudo 33350: OUTPUT[hello␤]
literal what does xx= do? 21:24
it's mentioned in S03 but not documented
masak literal: $a xx= $n does $a = $a xx $n 21:25
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
literal ok 21:26
masak TimToady: thanks.
slavik what is op xx ??? 21:48
masak slavik: repeat something $n times as list elements. 21:50
see S03. 21:51
slavik so $a xx 5 will return a list of 5 $a?
masak aye. 21:52
slavik k 21:54
masak I just want to say that I wrote a test module in Perl 6 today that does factory methods, closure parameters and passing arrays as arguments. 22:28
and it worked on the first try in Rakudo!
things like that make a developer very happy, you know. 22:29
rakudo: say ("a" xx 5).perl # for slavik 22:30
p6eval rakudo 33352: OUTPUT[["a", "a", "a", "a", "a"]␤]
slavik nice 22:31
mncharity perl.net.au/wiki/Elf updated. 22:35
lambdabot Title: Elf - PerlNet
masak mncharity++ 22:36
mncharity "and it worked on the first try in Rakudo", huzzah! 22:36
masak mncharity: if you were to summarize the current status of Elf in three words, what would you say? 22:37
pugs_svn r24111 | putter++ | [STD_blue] Makefile targets for selecting a working STD version (head is broken). 22:39
slavik not ready yet :P 22:41
so, what is elf's story?
what is it built on top of and such?
mncharity masak: 3 words? "mncharity labors alone"? Not true - STD and gimme5 is TimToady. "two person hobby"? plus pmurias. lack of dev resources being the primary characteristic of anything p6. 22:42
masak aye. 22:43
mncharity: if you had a magic wand that produced a third person working on the project, what would you advice that person to do? 22:44
mncharity project wise, STD_blue self compiling may actually be an inflection point. if STD also proves to generate a valid parse of STD.pm, then at this point, the elf critical path is all me - parsing may now be working sufficiently well to bootstrap.
masak sounds cool. 22:45
mncharity s/STD also/gimme5 also/
"only regexs left". "small matter'o parsing". "regexs easy, ha!".
slavik: :) re story, 22:46
masak rakudo: grammar G { token TOP { ^ <foo>+ $ }; token foo { ':' <bar>? }; token bar { \w } }; ":a:b" ~~ G::TOP; say ~$/<foo><bar> # is this a bug? shouldn't ~$/<foo><bar> be just 'a' ?
p6eval rakudo 33354: OUTPUT[:a␤]
slavik masak: ~~ G works ;)
masak rakudo: grammar G { token TOP { ^ <foo>+ $ }; token foo { ':' <bar>? }; token bar { \w } }; ":a:b" ~~ G; say ~$/<foo><bar> # is this a bug? shouldn't ~$/<foo><bar> be just 'a' ? 22:47
p6eval rakudo 33354: OUTPUT[:a␤]
masak slavik: indeed.
mncharity it's a self-compiling p6 implementation which has emphasized being usable for a large p6 project (itself).
slavik masak: it has worked for a while now
mncharity: like kp6?
masak slavik: aye. but that code is not originally mine, I copied it from an email.
slavik masak: see my blog :P 22:48
masak slavik: I am reading it :)
mncharity like kp6 in emphasizing self-compilation, not like kp6 in being designed for performance which makes that practical.
slavik here's another one ... using subst, how would one replace a multiple occurences of a char with like char-count
mncharity takes just a couple of seconds to self compile. 22:49
pmichaud rakudo: grammar G { token TOP { ^ <foo>+ $ }; token foo { ':' <bar>? }; token bar { \w } }; my $m = G::TOP(':a:b'); say $m<foo><bar>;
p6eval rakudo 33354: OUTPUT[:a␤]
pmichaud rakudo: grammar G { token TOP { ^ <foo>+ $ }; token foo { ':' <bar>? }; token bar { \w } }; my $m = G::TOP(':a:b'); say $m<foo>;
p6eval rakudo 33354: OUTPUT[:a:b␤]
pmichaud rakudo: grammar G { token TOP { ^ <foo>+ $ }; token foo { ':' <bar>? }; token bar { \w } }; my $m = G::TOP(':a:b'); say $m<foo><bar>[0];
p6eval rakudo 33354: OUTPUT[Use of uninitialized value␤␤]
pmichaud rakudo: grammar G { token TOP { ^ <foo>+ $ }; token foo { ':' <bar>? }; token bar { \w } }; my $m = G::TOP(':a:b'); say $m<foo>[0]<bar>[0];
p6eval rakudo 33354: OUTPUT[a␤]
mncharity wonders if rakudo can run elf... experiment for another time. 22:50
pmichaud masak: the problem is that Parrot doesn't distinguish hash access from array access
so $/<foo><bar> is actually the same as $/<foo>[0] 22:51
because $/<foo> is an array.
masak pmichaud: so, is it a bug or not? 22:52
slavik: something like this?
pmichaud yes, but I'm not sure where yet.
masak my $regex = / b+ /; my $str = "abbbbbc"; $str ~~ $regex; say $str.subst( / b+ /, { "[" ~ $/.chars ~ " b's]" } )
rakudo: my $regex = / b+ /; my $str = "abbbbbc"; $str ~~ $regex; say $str.subst( / b+ /, { "[" ~ $/.chars ~ " b's]" } )
p6eval rakudo 33354: OUTPUT[a[5 b's]c␤]
masak pmichaud: I'll report it, then.
mncharity slavik: so the main elf parser is a hand-written one based on an old version of STD.pm. there's now also one (STD_blue) based on the current STD.pm and the p5 gimme5. Next step is to teach elf to run STD.pm directly. Internals are p6. Main backend is p5, with a working but not yet really practical one on SBCL. 22:52
pmichaud I'll reply to the november email and explain it.
masak pmichaud: oki. it was a p6u email, though. 22:53
mncharity masak: re extra person, if they did lisp, perhaps "make elfish/on_sbcl (the CL backend) also run on CLISP, in hope the pragmatics (eg, compilation noise) are better". If p5, 22:55
"make a better multi-method dispatch module than Class::MultiMethod, folding in Luke's work, etc". Or, "add named arguments by...", hmm, maybe not, not sure I want destabilize the code base like that just now. 22:56
pmichaud now answered on p6u. 22:57
mncharity If really wizzy, help me fold STD.pm, elf, and rx_on_re together, which is my next/current task. 22:58
A low-tech task is "grovel through the Snn gathering prelude _signatures_". We have a file'o names, but don't even have a list of prelude functions and their signatures yet. :/ Unless someone has gotten to it and I've not noticed. 22:59
masak mncharity: ah, so S29 would have a lot of ready signatures for you? 23:00
mncharity goes to look at S29... 23:01
slavik ASSERTIONS!!!! :P
masak excuse me? 23:02
slavik pmichaud: since there are SDL and OpenGL bindings for rakudo, do you know if SDL will open an OpenGL context for OpenGL? I would assume so, because nothing really depends on rakudo for that
masak: I ma waiting for assertions in grammars :)
masak slavik: in Elf?
slavik masak: in rakudo
pmichaud at the moment assertions is a fair distance from the top of my priority list, alas. 23:03
slavik :(
pmichaud gonna need some PGE refactors first.
slavik pmichaud: any idea when parrot will have a nicer bignum?
rakudo: say 2**65
pmichaud slavik: no.
p6eval rakudo 33354: OUTPUT[3.68934881474191e+19␤]
slavik something that doesn't output that
masak slavik: you can always fake assertions by putting code in subs and methods instead :)
slavik masak: but <> in grammars don't work at all :(
masak slavik: well, yes it does. 23:04
I used <!before xxx> yesterday.
slavik it does?
masak sure!
slavik: you _really_ should check out November.
slavik what about <say "matched"> or something?
pmichaud if <> didn't work, then we wouldn't be parsing anything in Rakudo.
<say> isn't a subrule.
slavik oh
masak slavik: you might want to read S05 again.
pmichaud you could try: method say($/) { say 'hello'; } in the grammar. That might work. 23:05
as in, that might get <say> to work.
slavik I see, so <> isn't just some code to run? 23:06
pmichaud no, there's a whole syntax for it.
mncharity masak: re S29, basically when the elf hypothesis was "get prelude, pass tests, then people will care", the bottleneck was "there is no prelude, have to write one working backwards from tests". Now the elf hypothesis is "people will care when elf is bootstrapped", but after bootstrap, it's back to needing prelude code.
pmichaud <foo> - invoke a subrule, capture as $<foo>
<?foo> - invoke a subrule zero-width match
<!foo> - invoke a subrule, negated zero-width match
<[abc]> - match any of 'a', 'b', or 'c'
slavik I see
pmichaud <.foo> -- invoke a subrule, don't capture.
etc. 23:07
masak mncharity: I see. yes, that sounds reasonable. furthermore, writing a prelude sounds like lots of fun! :)
slavik I mean like: token blah { 'glah' } <function()>
wait
rather the closing brace should be at the end of that
masak slavik: it's easier if you use the syntax described in S05 rather than making up your own. :P 23:09
slavik :(
this is perl6, I should be able to invent my own!!! 23:10
mncharity masak: :) could indeed be fun. been fighting to get to the point where it's possible for 3 years now. modulo the limits of elf, it can be done right now. that's another thing the hypothetical person could work on. just not critical path to bootstrap, so no fun for me. ;)
masak slavik: don't be sad, you're like this close to reading it again, and then all will be well.
slavik eventually, it will be "*" that will link up with my brain and do whatever it is I want at the moment
it will be a new language ... called STAR
^^
masak yeah, whatever.
mncharity s/so no fun for me/so I have to work on other things/
slavik :( 23:11
mncharity but if anyone wanted to pour out prelude, in elf dialect or full p6, that would be nifty.
masak mncharity: I'll keep that in mind.
Elf looks like something worth helping along. 23:12
mncharity really? neat. I sometimes wonder. The "it seems important, but if so, why am I dangling out here by myself" problem. :) 23:13
masak mncharity: you're not alone in having such thoughts. :) 23:14
masak I mean, November has a few people, but it could use a lot more. 23:14
masak there's simply not enough people crowding around our cool Perl 6 projects :) 23:14
mncharity Had a conversation with a haskell person on the subway a few days back (gotta love the Boston Red Line, great techy conversations with strangers:). Reminded me that much of what makes p6 valuable is not only non-obvious, but also hard to explain. 23:15
masak indeed. 23:16
the grammars thing, for example, has simply Never Been Done Before.
using grammars in a program still feels a bit like coding on top of a humming jet engine :) 23:17
mncharity re Never Been Done Before, actually, my understanding is there was quite a bit of it back in the 60's. but the engines weren't powerful enough to get back up to the "real" languages of the day (eg, FORTRAN). so you per-application "language" divergence, with no obvious way to reduce entropy. 23:18
masak Tour de Babel. 23:19
mncharity yes. my current line is "yes, there's the potential for great divergence. but the infrastructure is strong enough both to support current real languages (so divergence isn't unavoidable), and to do Java-like 'you must use language subset/dialect X' code analysis/policy enforcement tools". 23:21
masak mm 23:22
mncharity the haskell conversation was sort of like that. question was "does p6 have a haskell-like type system". I was trying to run an argument of "the flexible parser lets you write haskell. the culture and infrastructure will let you compile it to an embedded ghc. so p6 is a superset of hs. and you can degrade gracefully, in a engineering-wise useful way." but we kept getting stuck on "p6 language lacks limits X, so you can do hs-s 23:24
masak well, there probably are real roadblocks to emulating Haskell... 23:25
mncharity need to build an argument that p6 is a... metalanguage?, not a language family, but... hmm, not sure what to call it.
masak at least on top of Parrot.
mncharity sort of like, a prolog engine is lousy for solving any but toy problems, but great for implementing engines to solve your real problems. 23:26
masak mncharity: I think I will not be using the language remolding functionality very much myself, because I think that it might be one of those easy but easy-to-shoot-yourself-in-the-foot things. I will probably mostly be a consumer of modules that change the grammar for me. :)
mncharity: did you just imply that Perl 6 is lousy for solving anything but toy problems? :P 23:27
mncharity re toy problems, more like "the full p6 language has many undesirable features, including being very big. that's why you won't in general use the full p6 language in any particular module or application. the p6 compiler story permits the graceful engineering choice of what subset to use." 23:29
masak doesn't p5 also permit a choice of what subset to use? 23:30
mncharity yes, but I can't choose the "haskell subset" or the "C subset" or ...
masak no? 23:31
mncharity "C subset" perhaps, though the existing inline stuff is rather a kludge.
masak I've heard about people writing in a C-like way in Perl 5. but maybe that's not what you mean here. 23:32
mncharity hmm, what do I mean. "I can write a p6 which has exactly the semantics and runtime performance of language X". 23:33
therefore there is little cost, and much benefit, to write p6 rather than language X.
for example, if I want to write javascript, I may still wish to write it as p6, because then I get macros, etc. 23:34
masak I'm not sure your dream will come true, at least not that clearly. 23:35
even considering that Perl 6 will have macros and a mutable grammar. 23:36
syntax is easy to change in a language; semantics, not so much.
ab5tract i can't think of a single undesirable feature of p6 23:38
mncharity masak: if p6 becomes real, it will undoubtably get compile and runtime mops. and on different runtimes get different semantic "extras". 23:41
masak uh oh, now you're starting to sound like ruoso and pmurias when they talk about complicated things. :P 23:42
mncharity and while p6 is a large language, it's also a great language to do language implementation in. I suspect, once we finally have a working p6 impl, it will turn out to not be intractable to play with the language. even if STD has several hundred productions. :)
^.^
masak mncharity: define 'working p6 impl'. 23:43
Rakudo works.
fsvo 'works'.
vixey which value of works? 23:46
mncharity masak: re define 'working p6 impl', unless things have changed recently, rakudo works in the same sense that pugs works. passes lots of test but can't write non-small p6 applications in it. unless rakudo is now running ext/* ?
masak vixey: the value "I'm writing code in it" of 'works'. 23:47
mncharity pugs could run ext/*. still couldn't handle writing p6 prelude, or something the size of elf (or even half that).
masak mncharity: re ext/*, I don't know. haven't checked recently. 23:48
doing that sounds like an interesting idea.
mncharity :)
masak mncharity: would you consider the November wiki non-small?
mncharity "if it isn't tested, it doesn't work. qed"
sorry, i've not looked at November :/ 23:49
masak mncharity: all the .pm files in November total 47KiB right now.
mncharity if you didn't have to do a lot of "well, that didn't work, tickled an implementation bug, let's try another approach" whi oops... 23:50
masak mncharity: yes, but less and less.
the summer was worst :)
mncharity still alive. yay. [...] which characterized non-small pugs (and elf too) work, then rakudo's an improvement (or you have internalized it's current limitations;) 23:52
masak according to xargs wc, we have 5482 lines of text in out .pm files. that's not LOC, of course, but that's at least 3kLOC.
mncharity "out .pm files"?
masak sorry, "our .pm files". 23:53
i.e. our modules.
masak yep, removing empty lines, lines w/ comments or closing curlies, we still have 3823 LOC. 23:56
I don't know if I've internalized its current limitations. to some degree, sure. we're simply using whatever is available right now. 23:57
pugs_svn r24112 | putter++ | [elfish/STD_green] Created. Project to run STD.pm on p6/elf.