6.2.11 released! | pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | < audreyt> my fingers juxpatosed
Set by nothingmuch on 24 February 2006.
audreyt committed 00:04
ingy audreyt! 00:21
audreyt ingy!
ingy I think I just found my first haskell toy program
audreyt oooh 00:22
ingy btw I just compiled 5500 lines of work templates into 10500 lines of javascript
nothingmuch hi ingy, i need to complain to you in a jiffy
my multi sub collect_arguments ([]) {}
my multi sub collect_arguments ([ $args, *@args ]) {
ingy as I look at the js output, I realize the need for an optimizer
nothingmuch my multi sub collect_arguments : nonfatal ([ $args, *@args ]) { }
ingy so maybe I'll write one in Haskell
nothingmuch ingy: Spork has a missing dep: Spork::Formatter::Kwid 00:23
ingy btw, i just got TaPL
nothingmuch well, actually it just dies in the test
because the module is not there
ingy nothingmuch: report it to rt
I have a note to go through all the queues soon
nothingmuch ([]) {} 00:24
okay
lypanov wb 01:48
audreyt curses the wireless network here 01:49
(not to say that nothingmuch didn't do a brilliant job, but I just lost 2.5hr of journaling. :/)
lypanov (ooucccchhh....)
svnbot6 r9179 | audreyt++ | * $<> is spelled as $() now, so we revise history. 02:03
r9180 | nothingmuch++ | Getopt::Process - Generic Getopt Engine Thingy Moose 02:06
KingDiamond hello, szabgab 08:27
szabgab rehi
nnunley 'make test' still takes on the order of 5.5 hours for me. Is there anything that I need to do to ensure precompiling and the fast path stuff is working?\
This is with a 1.6 ghz PPC running OSX. Pugs has nothing embedded. 08:30
Other than hs-plugins. 08:31
nothingmuch moose 08:38
hola szabgab
szabgab hey nm 08:41
do you already have plans when are you arriving in Netanya ? 08:42
KingDiamond salty-horse, hi 08:54
salty-horse hello, KingDiamond
KingDiamond salty-horse, realname=Premshree :) 08:55
salty-horse, I'm in Netanya now
salty-horse oh :) which cafe?
KingDiamond salty-horse, Solan Telecom
salty-horse shall we fork to #osdc.il or something?
KingDiamond salty-horse, that'd be better 08:56
nothingmuch TimToady: variable and function names resolve first of 08:58
all according to the lexical scope of the macro definition, and if
unrecognized in that scope, are assumed to be bound from the scope
of the macro call each time it is called
this means that we can't get strict 'vars' for quasiquuoting checks
nothingmuch TimToady: why is COMPILING:: too easy? 09:03
xinming Lwall landed... :-) 09:06
TimToady_ nothingmuch: I give up, why? 09:15
nothingmuch well, because it says: 09:16
... are assumed to be bound from the scope
of the macro call each time it is called
?eval macro foo () { q:code { $x } } 09:17
evalbot_9180 undef
nothingmuch that compiles
?eval macro foo () { q:code { $x } }; { my $x; foo() };
evalbot_9180 \undef
nothingmuch ?eval macro foo () { q:code { $x } }; { foo() };
evalbot_9180 Error: Undeclared variable: "$x"
nothingmuch this moves the compile time error to the wrong time
audreyt I think it's the correct time, btw.
nothingmuch okay 09:18
but that's just like, your opinion, man
why wee think it'
audreyt mm, I think you mean ma'am
nothingmuch s wrong:
no, because i was quoting a movie
lumi "man"'s gender neutral in this context, I think :P 09:19
audreyt I will not quarrel
sure it is :)
nothingmuch most inputs to a macro are *not* going to be implicit parameters glued to the thingy
e.g.
?eval macro max ( $x, $y ) { q:code { { my ( $x_v, $y_v ) = ( {{{$x}}}, {{{$y}}} ); $x_v >= $x_y ?? $x_v :: $x_y } } }; max(5, 4); 09:20
audreyt ok. so you think it should've said $COMPILING::x
evalbot_9180 Error: unexpected "{" expecting expression
audreyt and $x should be strictly lexical
nothingmuch yes
the fallback to lookup at COMPILING:: is bad
because it means q:code has no stricture
and for an uncommon behavior (steal a symbol from your caller) it's not good to have an easy to get wrong default behavior 09:21
that also removes useful error messages
?eval macro max ( $x, $y ) { q:code { { my ( $x_v, $y_v ) = ( {{{$x}}}, {{{$y}}} ); $x_v >= $x_y ?? $x_v :: $x_z } } }; max(5, 4);
evalbot_9180 Error: unexpected "{" expecting expression
nothingmuch anyway, in that macro, spot the typo
audreyt I don't have to; the user site will blow up
nothingmuch (why isn't it parsing, btw?)
right
but if the macro is being linked in?
this is an error in the macro
lumi That's six months from now 09:22
nothingmuch it's not the user's site
audreyt still the user site will bloe up
nothingmuch so why should the user suffer?
why don't I get it when I'm compiling the macro?
which is when I want it?
audreyt how is it any different from the use of $+foo?
nothingmuch this is like saying "Well, all strict-vars checks happen at runtime"
it isn't
except that $+foo is very very explicit about it
audreyt no, not runtime, "use" time
nothingmuch just like $COMPILING::
macro-run-time is use time
$COMPILING::$x is like $+x 09:23
it tells the reader this variable is not in this scope
i think COMPILING:: should have a shorthand
and that saying:
my
macro foo {
audreyt q:code(:COMPILING<$x $y>){ $x + $y }
nothingmuch my $x ::= $COMPILING::x;
yeah
exactly
audreyt I'm fine with the predeclaration form. 09:24
nothingmuch but that unresolved symbols in the quasiquoted text are errors at the time of the parsing of the quasiquoted text
(the macros compile time)
(not the macro's runtime, which is user code's runtime)
audreyt unless you predeclare. sure.
nothingmuch ...unless you predeclare
yeah
lumi User code's compile time
audreyt which is user code's compile time, that is
nothingmuch yes 09:25
i was just trying to be very very explicit about detailing those =)
audreyt ok. so q:code accepts pseudopackage-named export lists
exactly like import/export list does
nothingmuch ofcourse
audreyt and introduce those names to the quasiquote body
just like import/export, if anything is not mention there, and is not supplied by your lexical scope 09:26
then it's a lookup failure.
(under default strictude)
sounds good?
nothingmuch yes
=)
audreyt good then. :)
nothingmuch and 'no strict' gives you a default fallback to COMPILING:: ? 09:27
TimToady_: any does this answer your question? ;-)
audreyt that'd work, but now we have explicit import lists, that might not be needed anyway
(in other word, I no longer care :))
nothingmuch please restate that last bit, i didn't grok 09:28
audreyt now that we can explicitly say q:code(:COMPILING)
which persumably means everything nomentioned gets fallbacked to COMPILING
nothingmuch aha
audreyt using "no strict" to mean the same thing sounds bad
nothingmuch yeah 09:29
audreyt nopaste a S06 patch then? :) 09:30
nothingmuch sure
same as yesterday? 09:31
audreyt sure
nothingmuch does the phrasing "q:code(:COMPILING)" imports the compiling scope into the quasiquoted scope?
audreyt the "compiling scope defined so far"
but yes.
nothingmuch ... ofcourse
=)
thank you
audreyt thank _you_ :) 09:32
this is nicer than either explicit qualification or implicit fallback
nothingmuch yes
audreyt which, come to think about is, is why we have the scope export/import mechanism in the first place ;) 09:33
TimToady_ fine by me, but I'm starting to wish that COMPILING was a hair shorter.
audreyt $HYPER::x 09:33
$META::x
$SHIFT::x
nothingmuch what's the opposite of {{{ }}} ? 09:34
because '{{{ $COMPILING::x }}}' means '$x', i think
no
err
whatever
audreyt it means using the compiling early-bound x, which is almost always undef unless you are in the same compilation unti as your macro
audreyt as a splice. 09:34
lumi Can you use {{{ }}} anywhere? I think it would mean "compile-time eval and splice here" 09:35
TimToady_ lumi: yes
though it occurs to me we didn't spec it. Talked about it last night though. 09:36
audreyt misses ^A^A^A ^D^D^D
(but sure, why not. :))
lumi Heh
nothingmuch anonymous macro syntax
TimToady_ basically we just assume a big q:code {...} around the main compilation unit. 09:37
bsb stick that up your Y-combinator 09:38
nothingmuch my $x; {{{ $COMPILING::$x }}} = 10; say $x; 09:39
audreyt it doesn't quote work hat way
TimToady_ bsb: are you cursing again? :)
audreyt because $COmPILING::x will hold a string or ast by that 09:40
but it does not
bsb I only do that when splatting a match
*%$/
audreyt you can also spell it as
*%${}
I mean *$/{}
TimToady_ bsb++
lumi my $x; {{{ q:code:{ $COMPILING::x } }}} = 10; say $x;
audreyt lumi: that'd work, yes.
but it's easier just to say 09:41
BEGIN { $COMPILING::x = 10 }
or even
BEGIN { $x = 10 }
nothingmuch ah, yes
audreyt if you are in the same compilation unit.
TimToady_ no, I'm over in the other cabin.
svnbot6 r9181 | Darren_Duncan++ | r2625@darren-duncans-power-mac-g4: darrenduncan | 2006-02-23 16:48:45 -0800
r9181 | Darren_Duncan++ | ext/Rosetta/ : small changes to resync with new 0.721.0 CPAN release
audreyt {{{ ... }}} is probably only good for splicing snippets of computed code.
nothingmuch yeah 09:42
TimToady_ still, gives a way of defanging some injection attacks on eval.
audreyt {{{ (1..10).map:{"use Foo$_;"} }}}
dduncan once again, I have no idea why that last commit was repeated 09:43
svnbot6 r9182 | Darren_Duncan++ | r2671@darren-duncans-power-mac-g4: darrenduncan | 2006-02-25 01:39:44 -0800
r9182 | Darren_Duncan++ | ext/Rosetta/ : added new module Rosetta::Shell, an interactive command shell over Rosetta, to make casual use/try-outs/dev/testing easier
dduncan strange svk merge behaviour 09:44
the comment for r9181 is the same as one from 1-2 days ago
bsb svk mi --recover # has been invoked a number of times recently
dduncan: I had the same problem
bsb It gets you a lot of karma though :) 09:45
dduncan my concern is if it is screwing up the repository
what do you get if the same delta is applied twice?
stuff like that
bsb In my case, none of the changes actually seemed to happen
audreyt dduncan: no, that can't happen :) 09:46
bsb We tried a few things but ended up --detaching the mirror and fixing it up
pasteling "nothingmuch" at 82.81.1.109 pasted "S06 patch for COMPILING:: non defaultness" (95 lines, 4.3K) at sial.org/pbot/16014
bsb "we" in the perl6 sense - I watched while audreyt did everything
nothingmuch dduncan: if that ever happens what you do is: "clkao: ping" 09:47
and then within a half-hour to one hour things are OK
but usually even audreyt: ping is enough
the only diff is that clkao is a masochist and wants people to complain 09:48
dduncan I'll take your own post as having accomplished that
nothingmuch (if they're complaining about a problem)
several times
dduncan I've complained about this problem at least 3 times now
nothingmuch this one time mst actually had to roll back catalyst svn because I was abusing branches 09:49
without knowing that i was abusing
(i thought it was a legitimate use)
audreyt nothingmuch: looks very sane.
nothingmuch audreyt: yummy goodness
or
whole grain goodness
okay
now to finish the S04 patch 09:50
then the darcs slides
then the perl slides
then learn DBIC
TimToady_ nothingmuch: I don't like use of COMPILING:: within the body
nothingmuch of the text?
you mean s/::$//;?
TimToady_ I think {{{...}}} should be the only "foreign" element.
nothingmuch ah
okay
audreyt yeah, maybe just use the import form 09:51
nothingmuch so in that case only the "importing" is legal
TimToady_ I want to be able to write a macro that can say "COMPILING" in the
nothingmuch yeah, i think that's good
TimToady_ user's space
audreyt also add a chunk about {{{}}} in the main body
bsb TimToady_: I tried to convince them...
nothingmuch what is "main body" ?
audreyt shower, bbiab
nothingmuch bsb: we agree
bsb They wanted strict
audreyt nothingmuch: anywhere within normal compilation
nothingmuch ah 09:52
macro BEGIN (&block) { my $result = block(); q:code { $result } }
hmm
bsb I thought declaring the bindings of the macro somehow might be a good compromise 09:53
audreyt amazingly, that even works.
nothingmuch bsb: that's exactly what's going to happen 09:54
think the "reccomended" way should be to import into the quasiquoted text
but that COMPILING:: is still useful when you are not quasiiquoting
right?
bsb is still backlogging
TimToady_ right-o. 09:55
It's not ambiguous in the ordinary macro body.
nothingmuch so i think a reorder of the patch
as opposed to removing the COMPILING:: pseudo package
bsb It's a bit weird that our macros may have even more balanced braces than lisp 09:56
TimToady_ but maybe stress that COMPILING:: in the quasiquote doesn't mean the same as COMPILING:: outside of it.
nothingmuch hmm
bsb: =)
TimToady_ quasi-unquoting is weird, so it should look weird.
bsb It's hard to explaing/understand COMPILING:: as it is 09:57
I don't like the word, the "scope currently being compiled" made good sense
eventually
TimToady_: yes, even more so if it's can be in the main program body 09:58
TimToady_ bsb: you mean about eval-proofing? 10:00
pasteling "dduncan" at 24.69.53.198 pasted "clkao; here's what happened at my end during faulty duplicate push by svk" (277 lines, 12K) at sial.org/pbot/16015
dduncan maybe that'll help clkao with debugging this persistent problem 10:01
bsb I wasn't thinking about that. Only that {{{ }}} should be bulky and weird looking
audreyt TimToady_: the implicit param sigil can already be used of that 10:02
macro hey () { { "hello "~$^s }.body }
bsb I hope no one uses vim's manual folding 10:03
:h fold-marker
audreyt that makes it essentially a twigil for COMPILING
TimToady_ notes that audreyt once again takes her laptop into the shower...
audreyt (and it even works in pugs right now)
bsb that's nuts 10:04
audreyt maybe go as far as saying if a macro returns CODE, its body is used as the AST 10:05
TimToady_ that's more or less what we said originally in the Apo.
audreyt macro hey () { { "hello $^s" } } 10:06
bsb TPF grant for waterproof pugs development machine
audreyt is that making things too easy? ;)
nothingmuch okay, i'm not suure how to fix this stuff
TimToady_ It's not exactly transparent.
nothingmuch audreyt: could you please fudge the patch, or at least tell me the delta? 10:07
audreyt indeed, so maybe it's a bad idea after all.
TimToady_ But I'm sure people will be willing to cargo cult it.
audreyt the explicit .body thing at least means you are aware of what you're doing
nothingmuch: ok... wait for me to finish my shower so I can typ faster
TimToady_ Yes, it's essentially "undressing" the closure so that $^s binds outward to the "wrong" variable. 10:08
nothingmuch thank you 10:12
i like this body is a wrong variable?
gaal audreyt: anatoly's analysis shows that there are no good pure candidates for factoring out in Parser 10:13
because many functions need ruleExpression 10:14
anatoly gaal: that's your analysis, not my analysis, I just smoothed a corner or two :)
gaal only be sure to please call it "research" :)
so if we can -boot that, maybe there is hope yet 10:15
integral iirc that's why we've got Parser.Program, because that stuff *could* be factorised out 10:17
gaal and Parser.Operator (audreyt++)
anatoly the most frequent callees in Parser.hs, by the way, are ruleExpression, retSyn and ruleBlock. 10:18
integral they're the main entry points into the perl grammar really 10:19
gaal anatoly: www.haskell.org/ghc/docs/latest/htm...-recursion 10:21
integral iirc we used to use -boot's but at that point (6.2/3?) they were too buggy (lots of impossible stuff happening) 10:22
theorbtwo wonders if he can have an idea with his tiny knowladge of what's going on...
Why don't macros take CALLER:: parameters, as in...
macro d($debuglevel=$CALLER::debuglevel) { say "$debuglevel" } 10:23
svnbot6 r9183 | bsb++ | r9188@rex: bsb | 2006-02-25 12:27:33 +0200 10:29
r9183 | bsb++ | Cleaned up stale comments and s:g/CODE/q:code/
audreyt theorbtwo: sure, but only if then are declared env 10:29
gaal_ well, at worst we can prehaps pass those three suspect^Wpopular functions as arguments to the others 10:30
audreyt yup
theorbtwo Hm. I never much liked that rule... how difficult would it be to simply make macros an exception to it? 10:31
gaal_ lumi: ruleExpression and the other two "portals" to p6 grammar
theorbtwo Anyway, it seems that explicitly listing the implicit arguments to a macro at the top is to be considered a good thing. 10:31
audreyt dconway++ # long-distance hackathoner patching up synopses 10:35
svnbot6 r9184 | audreyt++ | * opaque_ast_macros.t: strictude-observing, implicit-param-powered, 10:44
r9184 | audreyt++ | use-site variable bindings:
r9184 | audreyt++ | macro hey () { { "hello $^s" }.body }
r9184 | audreyt++ | my $s="world";
r9184 | audreyt++ | is(hi(),"hello world","macros can bind in caller's lexical env");
r9184 | audreyt++ | * also parse for the q:code(:COMPILING){...} form.
pmurias I got a commiter bit yesterday, how do i activate it? 11:07
integral activate it? 11:08
integral when you try to svn/svk commit, it'll prompt for your password. If your username is different from your login name, just hit enter and it'll prompt for that 11:08
pmurias to I use by openfoundry password, or do I have to specifiy it elsewhere? 11:09
integral yes, your openfoundry password is used for the webinterface and for svn
bsb macro blah () { q:code < some_sub() > } 11:20
Do the scope lookup rules for variables apply to sub calls? 11:21
a) some_sub from the macro decl scope b) some_sub from the macro use scope 11:24
TimToady hmm... 11:25
bsb use strict is less strict here, isn't it?
TimToady yes. 11:26
On the other hand it might be good hygiene to require :COMPILING<&some_sub>... 11:27
At least you don't have to repeat :COMPILING for additional subs... 11:28
bsb The arguments already mentioned for vars do still largely apply 11:29
TimToady And it would be consistent with the "no import by default" idea.
bsb yes
TimToady Agreed.
I'd say go ahead and crack the whip on those lazy macro writers.
bsb oooo, lazy macros.... 11:30
I feel dizzy
TimToady Finished off the bottle of wine, dijya? 11:31
pmurias integral:thanks, the problem was I used svn.perl.org instead of the real repo 11:37
svnbot6 r9185 | pmurias++ | Porting the control structure section from perlintro over (doesn't cover given and when yet...)
bsb Is there a parser based reason to disallow nesting {{{ ... {{{ ... }}} ... }}}? 11:41
Or a reason based reason.. 11:42
TimToady Maybe it's {{{ ... {{{{{{{{{ ... }}}}}}}}} }}}. :-) 11:51
GeJ EREADERROR 11:52
morning folks
TimToady Seriously, the parser should handle nesteds easily if it just pretends the inside is in {...}.
bsb q:code\ \\\ \\\\\\\\\ \\\\\\\\\ \\\ \
Then escaped that for perl -e
then put it in an alias 11:53
TimToady And document it in nroff.
or TeX
bsb :)
gaal audreyt: ping 12:23
audreyt gaal: realspace-pong 12:33
bsb {{{ q:code < <<< "}}}" >>> > }}} 12:37
audreyt bsb: this is no diff than 12:38
"{ q<...> }"
lumi Is PIL2 ~~ PIL^N? 12:58
audreyt lumi: PILN is an attempt at a native runtime for PIL2 12:59
PIL2 is a set of object serialization of core objects in an compilation unit 13:00
rafl ingy: Any idea what could cause that? bugs.debian.org/cgi-bin/bugreport.cgi?bug=353855 13:05
bsb Is this correct?
macro sayx () { q:code { my $x = 2 }; say $x }; sayx(); # ok
macro decl () { q:code { my $x = 2 } }; decl(); say $x; # nok, should be:
macro decl () { q:code { my $COMPILING::x = 2 } }; decl(); say $x; # ok
audreyt bsb: no, I think the first form is ok as well 13:06
svnbot6 r9186 | bsb++ | r9192@rex: bsb | 2006-02-25 13:03:48 +0200
r9186 | bsb++ | Mention AST in bad macro return
r9187 | bsb++ | r9195@rex: bsb | 2006-02-25 13:07:39 +0200
r9187 | bsb++ | s:g/CODE/q:code/ in comments
audreyt only free vairiables are subject to lookup rules
otoh, the sayx() is weird
I don't know what it means 13:07
rafl audreyt: May I privmsg you? 13:09
bsb sayx was just to see if the my $x introduces $x to the macro body
audreyt rafl: always, but why? :) 13:11
bsb: it'd not, and it better not
otherwise all the scoping rules are broken
bsb I concur 13:12
audreyt I... concur your concur! :) 13:13
audreyt should really start working on her slides instead of perlcrastinating
azuroth cries 13:21
svnbot6 r9188 | anatolyv++ | Extend func_refact to allow functions to ignore when computing 13:42
r9188 | anatolyv++ | connected components, and some better UI. Add --nodes to graphfuncs
r9188 | anatolyv++ | to just dump nodes and not connected components, this is what
r9188 | anatolyv++ | func_refact now needs to read with -n.
Khisanth finally finds himself wanting junctions in JS 14:55
bsb ask ingy 14:57
audreyt the residential alpha rhinocamel 14:59
s/ial//
azuroth alpha rhinocamel? 15:01
audreyt aka, master javascript hacker
azuroth why rhino? 15:02
oh well, best not pry. good night! 15:03
audreyt www.openjsan.org/ 15:04
goodnight!
Khisanth err s/finally/suddenly/
strange mistake!
azuroth: probably the cover of the o'reilly book
audreyt which comes from Mozilla Rhino iirc
ok, I think we are packing to leave the 'thon 15:05
or are supposed to
bbl...
salty-horse are the hackathoneers on their way back already? 16:50
putter gaal: pong 17:24
elmex how is perl6 going to be compiled? 18:17
Perl6 => PIR => PBC => Parrot ?
or Perl6 => PIR => PASM => PBC => Parrot
or Perl6 => PIR => AST => Parrot ??
cognominal the doc patch about vivification uses Perl5 conventions in Perl6 examples to access hash and arrays. 19:22
also I don't understand what the word destructive means in that context
spinclad elmex (if you come back): PIR => PASM is redundant, PIR compiles (assembles) to PBC directly 19:39
and AST comes before the PIR stage.
and there will likely be one or more stages in compilation before PIR, so we may have 19:41
Alias_ Won't all these transformations get expensive? 19:42
spinclad Perl6 => parse tree => PIL of some flavor => PIR => PBC => Parrot
Alias_: they have to happen anyway, whether they generate any external files or separate processes or not 19:44
Alias_ And so won't all these transformations get expensive anyway? :)
integral when there's disk caches, the small cost is amortized 19:45
spinclad so how could you (Perl6) run a program if you don't know what it means? 19:46
but yes, Perl6 is a complicate beast, and making sense of it has to cost. 19:47
but what I drew isn't much more than a vanilla C compiler has to do on the way to ./a.out 19:49
LeTo anyone here who can fix svnbot6 (<@Robrt> leo: retrieving maxrev+1 fills my logs with garbage.) 19:55
i.e. $pugs/examples/network/svnbot.p6 19:59
is there some recent and fixed $pugs/examples/network/svnbot.p6 on feather? 20:03
and readable of course
there shoud be some ;) 20:08
t@feather:~$ locate svnbot.p6 | grep -v '\.svn' | wc -l
t@feather:~$ locate svnbot.p6 | grep -v '\.svn' | 87
LeTo what does this mean: 20:18
lt@feather:~$ ./svnbot
pugs: Prelude.last: empty list
lypanov de-sex 21:40
gah
chris2 hey lyp 21:49
lypanov yoyo chris2 21:53
LeTo audreyt: I'm now runnning just pugs (6.2.10) for the svnbot - looks still the same 21:55