»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by Juerd on 28 August 2009. |
|||
00:07
lmc left
00:25
justatheory left
00:32
Student left,
elmex left,
synth left,
lisppaste3 left,
rjh left,
garron left,
blaze-x left,
Woodi left,
leedo_ left,
Infinoid left,
buu left,
meteorjay left,
yves left,
solarion left,
clkao left,
christine left,
integral left,
dmpk2k left,
TiMBuS left,
rhr left,
omega left,
dbrock` left,
Patterner left,
cotto left,
japhb left,
hudnix left,
wolverian left,
mj41_ left,
zostay left,
ingy left,
silug left,
payload left,
dalek left,
zaphar_ps left,
frettled left,
diakopter left,
sri_ left,
mtve left,
jan_ left,
nothingmuch left,
jql left,
jrtayloriv left,
Limbic_Region left,
crythias left,
simcop2387 left,
zerhash left,
Matt-W left,
tylerni7 left,
Grrrr left,
sjohnson left,
mdxi left,
zev left,
lucs left,
mspauldi1g left,
arnsholt left,
Rint left,
pjcj left,
hcchien left,
kcwu left,
kst left,
avar left,
cls_bsd left,
moritz_ left,
allbery_b left,
Intensity left,
KatrinaTheLamia left,
avuserow left,
ezra left,
pugs_svn left,
s1n left,
hugme left,
nbrown left,
mikehh left,
BooK left,
drbean left,
sbp left,
phenny left,
pmichaud left,
buubot left,
devin left,
Caelum left,
ssm left,
tak11 left,
NorwayGeek|Away left,
szabgab left,
donaldh left,
[particle] left,
Confield left,
JarJarBinks left,
Maddingue left,
Helios- left,
kolibrie left,
Khisanth left,
frodwith left,
nsh left,
c9s left,
PerlJam left,
ewilhelm left,
tomaw_ left
00:33
diakopter joined,
jrtayloriv joined,
TiMBuS joined,
Limbic_Region joined,
crythias joined,
rhr joined,
omega joined,
tak11 joined,
dbrock` joined,
Student joined,
elmex joined,
dalek joined,
Patterner joined,
zaphar_ps joined,
NorwayGeek|Away joined,
synth joined,
szabgab joined,
simcop2387 joined,
ssm joined,
donaldh joined,
avuserow joined,
zerhash joined,
lisppaste3 joined,
arnsholt joined,
mikehh joined,
mspauldi1g joined,
Confield joined,
nbrown joined,
tomaw_ joined,
japhb joined,
leedo_ joined,
mj41_ joined,
drbean joined,
ingy joined,
[particle] joined,
hcchien joined,
kst joined,
hudnix joined,
jan_ joined,
meteorjay joined,
cotto joined,
hugme joined,
lucs joined,
zev joined,
zostay joined,
clkao joined,
sri_ joined,
avar joined,
Woodi joined,
integral joined,
irc.freenode.net sets mode: +o diakopter,
Helios- joined,
mdxi joined,
KatrinaTheLamia joined,
nothingmuch joined,
kolibrie joined,
Khisanth joined,
sjohnson joined,
Intensity joined,
yves joined,
blaze-x joined,
wolverian joined,
pjcj joined,
garron joined,
Grrrr joined,
frettled joined,
kcwu joined,
buu joined,
buubot joined,
Caelum joined,
tylerni7 joined,
silug joined,
devin joined,
s1n joined,
jql joined,
BooK joined,
Rint joined,
Matt-W joined,
ewilhelm joined,
nsh joined,
dmpk2k joined,
Infinoid joined,
rjh joined,
solarion joined,
christine joined,
mtve joined,
allbery_b joined,
moritz_ joined,
cls_bsd joined,
sbp joined,
phenny joined,
pugs_svn joined,
ezra joined,
pmichaud joined,
irc.freenode.net sets mode: +oovo Matt-W moritz_ pugs_svn pmichaud,
JarJarBinks joined,
PerlJam joined,
Maddingue joined,
c9s joined,
frodwith joined,
irc.freenode.net sets mode: +o PerlJam
00:43
Whiteknight joined
00:54
payload joined,
PZt joined,
rhr_ joined
01:07
rhr left
|
|||
jrtayloriv | In NQP, if I'm trying to match the # sign in a token, can I just put it in quotes like '#', or do I have to do something special so that it's not treated as the beginning of a comment? | 01:08 | |
01:08
drbean left,
drbean joined
|
|||
pmichaud | ...nqp? | 01:12 | |
nqp doesn't do regexes yet. | |||
(it probably will by the end of september, but it doesn't do it today) | |||
jrtayloriv | lol -- oops PGE, sorry. | 01:13 | |
pmichaud | oh. To match a #, it needs to be in single quotes for PGE, yes. | 01:15 | |
otherwise it's a comment. | |||
jrtayloriv | thanks. | ||
diakopter | vijs: say "blue" if 0 | 01:16 | |
p6eval | vijs 28370: OUTPUT«blue time in interpreter: 0.006814 s» | ||
diakopter | perl6: say "blue" if 0 | ||
p6eval | elf 28374, pugs, rakudo 0eaf62: ( no output ) | ||
01:17
lambdabot joined
|
|||
diakopter starts | 01:17 | ||
TimToady: ooohhhh; so that's what statement_mod_cond is for :) | 01:18 | ||
01:23
lambdabot left
01:25
lambdabot joined
|
|||
TimToady | @karma diakopter | 01:26 | |
lambdabot | diakopter has a karma of 22 | ||
crythias | my karma ran over my dogma | ||
lambda... the dance of the forbidden greek letter. | 01:27 | ||
TimToady | my lambda is wearing your kappa | 01:28 | |
crythias | Omicron Gamma | ||
TimToady | psi! there's nothing nu. | 01:29 | |
crythias | I was delta bad hand. | 01:30 | |
TimToady | decom-mu-ting & | ||
diakopter | snicker | ||
crythias | Let's play a new gamma. | 01:33 | |
Iota try something ... what did you eta for dinner? | 01:34 | ||
01:34
kcwu left
|
|||
crythias | If at first you don't compile, vi, vi again. | 01:35 | |
01:42
Whiteknight left
01:50
stephenlb left
01:51
[1]Limbic_Region joined
01:55
jrtayloriv left,
jrtayloriv joined
01:57
dukeleto left
02:08
nihiliad joined,
Limbic_Region left,
[1]Limbic_Region is now known as Limbic_Region
02:30
dukeleto joined
02:33
lambdabot left
02:35
lambdabot joined
|
|||
crythias | perl6: 10 GOTO 10 | 02:42 | |
p6eval | pugs: OUTPUT«***  Unexpected "GOTO" expecting operator at /tmp/uOvopJLgG4 line 1, column 4» | ||
..rakudo 0eaf62: OUTPUT«Confused at line 2, near "GOTO 10"in Main (src/gen_setting.pm:3469)» | |||
..elf 28374: OUTPUT«Parse error in: /tmp/4XMflHYfTWpanic at line 1 column 0 (pos 0): Can't understand next input--giving upWHERE: 10 GOTO 10WHERE:/\<-- HERE STD_red/prelude.rb:99:in `panic' STD_red/std.rb:76:in `scan_unitstopper' STD_red/std.rb:224:in `comp_unit' STD_red/std.rb:210:in | |||
..`_UNI… | |||
crythias | that's just scary | ||
02:43
rhr joined
|
|||
crythias | perl6: 10 cls | 02:43 | |
p6eval | rakudo 0eaf62: OUTPUT«Confused at line 2, near "cls"in Main (src/gen_setting.pm:3469)» | ||
..pugs: OUTPUT«***  Unexpected "cls" expecting operator at /tmp/VlDMFOz83g line 1, column 4» | |||
..elf 28374: OUTPUT«Parse error in: /tmp/V8stxc8WZOpanic at line 1 column 0 (pos 0): Can't understand next input--giving upWHERE: 10 clsWHERE:/\<-- HERE STD_red/prelude.rb:99:in `panic' STD_red/std.rb:76:in `scan_unitstopper' STD_red/std.rb:224:in `comp_unit' STD_red/std.rb:210:in | |||
..`_UNIT' … | |||
crythias | perl6: 10 PRINT "HELLO, WORLD!"; | 02:44 | |
p6eval | elf 28374: OUTPUT«Parse error in: /tmp/60x5a8Pxkgpanic at line 1 column 0 (pos 0): Can't understand next input--giving upWHERE: 10 PRINT "HELLO, WORLD!";WHERE:/\<-- HERE STD_red/prelude.rb:99:in `panic' STD_red/std.rb:76:in `scan_unitstopper' STD_red/std.rb:224:in `comp_unit' | ||
..STD_red/std.… | |||
..pugs: OUTPUT«***  Unexpected "PRINT" expecting operator at /tmp/o8h0QTPOZG line 1, column 4» | |||
..rakudo 0eaf62: OUTPUT«Confused at line 2, near "PRINT \"HEL"in Main (src/gen_setting.pm:3469)» | |||
crythias | perl6: say "Ain't no thing but a perl thang" | 02:45 | |
p6eval | elf 28374, pugs, rakudo 0eaf62: OUTPUT«Ain't no thing but a perl thang» | ||
crythias | perl6: require HiRes::Graphics; | 02:46 | |
p6eval | rakudo 0eaf62: OUTPUT«invoke() not implemented in class 'Undef'in Main (/tmp/zhYNVOSfcj:2)» | ||
..pugs: OUTPUT«*** Unsafe function 'require' called under safe mode at /tmp/DOfshjyaaO line 1, column 1» | |||
..elf 28374: OUTPUT«Undefined subroutine &GLOBAL::require called at (eval 122) line 3. at ./elf_h line 5881» | |||
02:47
dukeleto left
02:48
rhr_ left
03:12
Limbic_Region left
03:14
jrtayloriv left
03:22
jrtayloriv joined,
__ash__ joined
|
|||
tak11 | pastebin.com/d7d6838ac <= anyone know how to fix that error when running perl Makefile.pl in trying to build pugs, | 03:40 | |
cabal update, says command not found* | |||
03:52
crythias left
04:02
PZt left
04:15
__ash__ left
04:17
tak11 left
04:46
justatheory joined
04:48
justatheory left,
justatheory joined
05:02
__ash__ joined
05:09
kent\n left
05:13
charsbar left
05:14
charsbar joined
05:15
Student left
05:28
rfordinal joined,
justatheory left
05:29
masak joined
|
|||
masak | morning, #perl6! | 05:29 | |
TimToady | top o' the evening t' ya | 05:30 | |
05:35
rfordinal left
05:45
__ash__ left
05:47
JimmyZ joined
06:05
kcwu joined
|
|||
moritz_ | \o/ | 06:21 | |
masak | |o| | 06:22 | |
06:43
mberends joined
|
|||
masak | mberends: ahoj! | 06:46 | |
mberends | hai masak, moritz_ ! | ||
I'm in a Windows classroom this week, trying out various ways of building Rakudo | 06:48 | ||
masak | last test I made work in Squerl: $dataset = Squerl::Dataset.new('').from('test'); my $sub = Squerl::Dataset.new('').from('something').filter('x' => 2); is $dataset.insert_sql($sub), 'INSERT INTO test SELECT * FROM something WHERE (x = 2)' | ||
06:49
ruoso left
|
|||
moritz_ | so a dataset is a also an SQL builder? | 06:49 | |
masak | yes, it outpus some sort of default SQL. | ||
but it seems very overridable, so I guess different adapters supply dialect modifications ad lib. | 06:50 | ||
s/pus/puts/ | 06:57 | ||
moritz_ | yesterday night I tried to implement some of thew new features of infix:<...> | 07:04 | |
but it depends on signature handling features that aren't available from perl yet (only PIR), it seems | |||
unless... | 07:05 | ||
rakudo: sub infix<....>(\$cap) { say $cap.perl }; 1, 2 .... 3, 4 | 07:06 | ||
p6eval | rakudo 0eaf62: OUTPUT«Malformed routine definition at line 2, near "infix<...."in Main (src/gen_setting.pm:3469)» | ||
moritz_ | rakudo: multi sub infix<...>(\$cap) { say $cap.perl }; 1, 2 ... 3, 4 | ||
p6eval | rakudo 0eaf62: OUTPUT«Malformed routine definition at line 2, near "infix<...>"in Main (src/gen_setting.pm:3469)» | ||
moritz_ | rakudo: multi sub infix:<...>(\$cap) { say $cap.perl }; 1, 2 ... 3, 4 | ||
p6eval | rakudo 0eaf62: OUTPUT«Malformed routine definition at line 2, near "infix:<..."in Main (src/gen_setting.pm:3469)» | ||
moritz_ | rakudo: multi sub infix:<...>($cap) { say $cap.perl }; 1, 2 ... 3, 4 | ||
p6eval | rakudo 0eaf62: OUTPUT«No applicable candidates found to dispatch to for 'infix:...'in Main (/tmp/NlVUcHTOME:2)» | ||
moritz_ | rakudo: multi sub infix:<...>(|$cap) { say $cap.perl }; 1, 2 ... 3, 4 | 07:07 | |
p6eval | rakudo 0eaf62: OUTPUT«Malformed routine definition at line 2, near "infix:<..."in Main (src/gen_setting.pm:3469)» | ||
masak | I think prefix:<|> is for call-side only. | ||
moritz_ | so what's the syntax for a signature that receives a raw capture? | ||
masak | and I don't really see what prefix:<\> would mean in a signature. | ||
'Capture $cap', perhaps? | 07:08 | ||
though even that would need to be special-cased, I guess... | |||
moritz_ | std: multi sub infix:<...>(\$cap) { say "hi" } | 07:10 | |
p6eval | std 28370: OUTPUT«ok 00:03 98m» | ||
07:14
explorer joined
|
|||
masak | moritz_: I don't see any example of \$var in any signature in S06. | 07:14 | |
std: multi foo(4) {} | 07:15 | ||
p6eval | std 28370: OUTPUT«ok 00:01 99m» | ||
masak | rakudo: multi foo(4) { say "OH FOUR" }; foo(4) | ||
p6eval | rakudo 0eaf62: OUTPUT«OH FOUR» | ||
masak | that is so cool. | 07:16 | |
moritz_ | S06:2945:=item .cando(\$capture) | ||
masak | but that's a call as well, isn't it? | 07:17 | |
not a declaration. | |||
07:17
iblechbot joined
|
|||
moritz_ | I think it's a declaration | 07:18 | |
STD.pm parses it. | |||
but I think it's underspecced | |||
07:19
nihiliad left
|
|||
masak | std: multi foo(\$capture1, \$capture2) {} | 07:19 | |
p6eval | std 28370: OUTPUT«ok 00:01 96m» | ||
07:19
ejs joined
07:20
donaldh left
|
|||
JimmyZ | rakudo: multi foo(Int $a) { say "Int" }; multi foo(String $a) { say "String" }; foo(4); foo('4'); | 07:20 | |
p6eval | rakudo 0eaf62: OUTPUT«Malformed routine definition at line 2, near "foo(String"in Main (src/gen_setting.pm:3469)» | ||
masak | JimmyZ: Str. | ||
JimmyZ | rakudo: multi foo(Int $a) { say "Int" }; multi foo(Str $a) { say "String" }; foo(4); foo('4'); | ||
p6eval | rakudo 0eaf62: OUTPUT«IntString» | ||
JimmyZ | masak: ;) | ||
masak looks forward to '$a as Int' | 07:21 | ||
moritz_ too | 07:23 | ||
07:24
donaldh joined
|
|||
moritz_ | augment class Any { method sin($self as Num:) { ... } } | 07:24 | |
07:28
dbrock` left
07:29
ejs1 joined
07:33
cmv joined
07:35
am0c joined
07:38
ejs left
07:41
jauaor left,
araujo left
07:48
cmv left
07:54
meppl joined,
cmv joined
08:04
TiMBuS left
08:17
dukeleto joined
|
|||
masak | what's the well-thought-out-practice way to test that a given method call produces a given exception? | 08:19 | |
moritz_ | 1) write an exception hierarchy | 08:20 | |
masak | :P | ||
moritz_ | 2) write a test function that does the check | ||
3) ... | |||
Matt-W | 4) PROFIT | ||
moritz_ | 4) Prophet! | ||
masak | my goal includes (1), but probably not the exception hierarchy you mean. | 08:21 | |
it's for Squerl. | |||
moritz_: and your (2) is just evading my actual question... | |||
moritz_ | masak: I know. | 08:22 | |
masak: a few months ago TimToady++ added a thorough description of $! to the specs | |||
masak: that all needs testing and implementing | 08:23 | ||
r26968, if you're curious | |||
08:24
zloyrusskiy joined
|
|||
masak | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; Cranky.new.foo | 08:24 | |
p6eval | rakudo 0eaf62: OUTPUT«MyException()<0x2ad3a6f805e0>in method Cranky::foo (/tmp/k4r7IW97CC:2)called from Main (/tmp/k4r7IW97CC:2)» | ||
masak | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; try { Cranky.new.foo } | ||
p6eval | rakudo 0eaf62: ( no output ) | ||
masak | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; try { Cranky.new.foo; CATCH { say "OH HAI" } } | ||
p6eval | rakudo 0eaf62: OUTPUT«OH HAI» | ||
masak | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; try { Cranky.new.foo; CATCH { say "OH HAI $!" } } | 08:25 | |
p6eval | rakudo 0eaf62: OUTPUT«OH HAI MyException()<0x2b72fa807000>» | ||
masak | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; try { Cranky.new.foo; CATCH { say $! ~~ MyException } } | ||
p6eval | rakudo 0eaf62: OUTPUT«0» | ||
masak | o.O | ||
probably stringifies on the way... | |||
moritz_ | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; try { Cranky.new.foo; CATCH { say $!.WHAT } | 08:28 | |
p6eval | rakudo 0eaf62: OUTPUT«Unable to parse block; couldn't find final '}' at line 2, near ""in Main (src/gen_setting.pm:3469)» | ||
masak | it's not unlikely that I will need this for Squerl, so that might motivate me to write Perl 6 spectests. | ||
moritz_ | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; try { Cranky.new.foo; CATCH { say $!.WHAT } } | ||
p6eval | rakudo 0eaf62: ( no output ) | ||
moritz_ | rakudo: class MyException {}; class Cranky { method foo() { die MyException.new } }; say "hi"; try { Cranky.new.foo; CATCH { say $!.WHAT } } | 08:29 | |
p6eval | rakudo 0eaf62: OUTPUT«hi» | ||
moritz_ | am I doing something really stupid here? | ||
Matt-W | interesting | ||
that looks... buggy | |||
moritz_ | ah, it segfaults | 08:30 | |
Matt-W | Ah | ||
masak | work remains to be done here(TM). | ||
QED. | |||
Matt-W | Buggy | ||
rakudobug@... | |||
Matt-W gets the fly spray | |||
moritz_ | btw rakudo auto-updating on the p6eval server is currently b0rked | ||
I tried to be too clever | |||
masak | :/ | 08:33 | |
rakudo: say 1/0; say "Alive"; say (1/0).Num | 08:35 | ||
p6eval | rakudo 0eaf62: OUTPUT«AliveDivide by zero» | ||
masak | note that the first &say call doesn't print anything. | ||
not even a newline. | |||
masak submits rakudobug | |||
moritz_ | masak: I just submitted the segfault, FYI | 08:36 | |
masak: I think yours is already submitted, but I'm not sure | |||
masak | moritz_: ok. | 08:37 | |
submitting it Justin Case. | |||
moritz_ | masak: could you please run t/spec/S32-num/rat.t and tell me if it succeeds? | 08:42 | |
masak runs it | |||
whoa, lots of tests... | 08:44 | ||
PASS | |||
moritz_ | thanks | ||
on my laptop at home it dies at the end | |||
and I have no idea why | |||
I nuked the parrot build | 08:45 | ||
and started from a fresh rakudo checkout | |||
masak | hm, but it appears I didn't have the latest version... running again. | ||
hm, and it quickly becomes evident that I need to rebuild Rakudo itself. ;) | 08:47 | ||
rakudo: my %h; %h{42} = 1; say %h.keys[0].WHAT | 08:57 | ||
p6eval | rakudo 0eaf62: OUTPUT«Str()» | ||
masak | currently, since Rakudo hashes coerce to Str, there's not much of an issue concerning hash key identity. which equality predicate will be used when general keys can be added? | 08:59 | |
09:00
synth left
|
|||
jnthn | masak: I'd guess === | 09:00 | |
masak | jnthn! | 09:01 | |
jnthn | masak! | ||
masak | jnthn: sounds reasonable to me. | ||
jnthn has awful wifi at this hotel...but it's a nice hotel otherwise. | |||
Going to Korea tomorrow. | |||
masak | rakudo: say "OH HAI" === "OH HAI" | ||
p6eval | rakudo 0eaf62: OUTPUT«1» | ||
masak | phew. | ||
09:02
M_o_C joined
|
|||
jnthn | masak: Aye, === generally does the right thing for value / referency type-y things. | 09:02 | |
masak | rakudo: say "OH HAI" === "OH " ~ "HAI" | ||
p6eval | rakudo 0eaf62: OUTPUT«1» | ||
masak | \o/ | ||
jnthn | Thus why it feels right to me here. | ||
masak | (Perl 6)++ | ||
jnthn | Indeed. | ||
jnthn is enjoying his travels, but also looking forward to digging back into Rakudo hacking. | 09:03 | ||
masak | aye. | 09:04 | |
jnthn wonders what the RT bug count is | 09:07 | ||
Hopefully, I get to close up some of the oldest ones in the next couple of months. | 09:08 | ||
masak | jnthn: we're at 494 new/opened/stalled RT tickets. | 09:09 | |
pushing 500 :) | |||
jnthn | oh noes | ||
epic need for rakudo hacking | 09:10 | ||
masak wonders how pmichaud++'s PGE refactors are progressing | |||
jnthn hopes they're going well, but hasn't been watching or talked to pm of late | 09:11 | ||
masak | moritz_: oh, and that test file you asked about PASSes here even after I update Rakudo. | ||
moritz_ | masak: thanks | 09:12 | |
09:19
am0c left
09:23
iblechbot left
09:26
agentzh joined
09:44
pmurias joined
|
|||
pmurias | diakopter: do we have any ideas how vivjs should be called once it's extracted from viv? | 09:44 | |
masak | TimToady: Google gives me 10 hits for 'guthlophikralique', all of them related to A12 :) | 09:48 | |
hm, I probably just created an 11th hit. | 09:49 | ||
rakudo: class A { method foo { say "A"; nextsame } }; class B { method foo { say "B"; nextsame } }; class C is A is B { method foo { say "C"; nextsame } }; C.new.foo | 09:50 | ||
p6eval | rakudo 0eaf62: OUTPUT«CAB» | ||
masak | \o/ | ||
if &foo is the way to refer to the sub 'foo', what's the way to refer to a method '.foo' of a class C? | 09:53 | ||
09:54
rfordinal joined
|
|||
masak | ah, C::foo | 09:55 | |
rakudo: class A { method foo { say "original" } }; (&A::foo).wrap({ say "before"; callsame; say "after" }); A.new.foo | |||
p6eval | rakudo 0eaf62: OUTPUT«beforeoriginalafter» | ||
masak | that is so cool. | ||
who needs the MONKEY_TYPING pragma when that's possible? :P | 09:56 | ||
09:57
rfordinal left
|
|||
masak | rakudo: sub foo { say "=" x 40 }; for reverse ^40 -> $n { &foo.wrap({ say "=" x $n; callsame; say "=" x $n }); }; foo | 10:00 | |
p6eval | rakudo 0eaf62: OUTPUT«========================================» | ||
pmurias | shouldn't it be MONKEY_PATCHING? | ||
masak | pmurias: yes, but it got monkeypatched :P | ||
(there was a spec change) | |||
in the above code, why doesn't $n bind like I think it should? | 10:01 | ||
I had hoped it would produce a nice triangle of ='s. | 10:02 | ||
10:03
payload left
|
|||
pmurias | rakudo: sub foo { say 40 }; for reverse ^40 -> $n { &foo.wrap({ say $n; callsame; say $n }); }; foo | 10:05 | |
p6eval | rakudo 0eaf62: OUTPUT«0000000000000000000000000000000000000000400000000000000000000000000000000000000000» | ||
pmurias | rakudo: sub foo { say 40 }; for reverse ^40 -> $n { say $n;&foo.wrap({ say $n; callsame; say $n }); }; foo | 10:06 | |
p6eval | rakudo 0eaf62: OUTPUT«39383736353433323130292827262524232221201918171615141312111098765432100000000000000000000000000000000000000000400000000000000xE2 | ||
mikehh | rakudo (0220cc2) builds on parrot r41428 - make test / make spectest (up to 28374) PASS - Ubuntu 9.04 amd64 | ||
pmurias | masak: looks like some sort of a scoping bug | 10:07 | |
masak submits rakudobug | |||
rakudo: sub foo($n) { say $n; if $n { callsame($n-1) } }; foo(1) | |||
p6eval | rakudo 0eaf62: OUTPUT«1Null PMC access in clone()in sub foo (/tmp/LZ0ZSuvObp:2)called from Main (/tmp/LZ0ZSuvObp:2)» | ||
masak submits rakudobug | |||
10:09
iblechbot joined
10:13
agentzh left
|
|||
moritz_ | wow, that reddit submission and twittering of my blog post brought about 1k additional visitors to my website (in one day) | 10:26 | |
10:26
rfordinal3643 joined
|
|||
masak | there's still a trickle of tweets about it. | 10:26 | |
10:32
muixirt joined
|
|||
muixirt | rakudo: my @a; @a[0, 0] = 1; | 10:33 | |
p6eval | rakudo 0eaf62: ( no output ) | ||
10:34
JimmyZ left
|
|||
muixirt | rakudo: my @a; @a[0, 0] = 1; say @a.perl | 10:35 | |
p6eval | rakudo 0eaf62: OUTPUT«[undef]» | ||
Matt-W | moritz_: the one about rats? | 10:43 | |
moritz_ | Matt-W: aye | 10:44 | |
somehow I regularly misjudge the popularity of my blog posts | 10:45 | ||
I got lots of good feedback on the "when we reach 100% we did something wrong", but I thought it was boring and lengthy | 10:46 | ||
now lots of talk about Rats, just because it has a pun in the title? | |||
Matt-W | I think it's also because there are a lot of programmers out there who are sick of dealing with floating point | 10:48 | |
that's certainly why *I* find it interesting | |||
11:00
rfordinal joined,
dakkar joined
|
|||
masak | the title certainly helps, though. | 11:02 | |
moritz_: "It might come as a shock to you if you haven't looked at Perl 5's source tree, and never compiled it from source and run the tests (and actually looked at the results), but it's true." -- you call that boring? :) it's in-depth journalism! | 11:06 | ||
moritz_ | :-) | ||
I should ask here for creative titles more often :-) | 11:07 | ||
masak | "Rats, Cats and KitchenSinks, oh my!" :P | 11:08 | |
moritz_ | only when they are implemented :-) | ||
masak | fair enough. | ||
moritz_ | rakudo: say KitchenSink.new | ||
p6eval | rakudo 0eaf62: OUTPUT«Could not find non-existent sub KitchenSink» | ||
moritz_ | we had a thread called "reuse everything but the kitchen sink" on p6l. My first thought was "why shouldn't KitchenSink be reusable too?" | 11:09 | |
11:11
rfordinal3643__ joined
11:15
am0c joined
11:16
frederico joined
11:17
baest left,
baest joined
11:20
rfordinal3643 left
11:22
rfordinal3643 joined
11:23
rfordinal left,
scottp joined
11:25
M_o_C left
11:32
payload joined
11:33
am0c left,
rfordinal joined
11:34
am0c joined
|
|||
masak | rakudo: class Forest { class Frog { method speak { say "ribbit ribbit" } }; has Frog $.frog; method new() { my Frog $frog .= new; self.bless(*, :$frog) } }; Forest.new | 11:34 | |
p6eval | rakudo 0eaf62: OUTPUT«Null PMC access in type()in method Forest::new (/tmp/FM8h5DDtSA:2)called from Main (/tmp/FM8h5DDtSA:2)» | ||
masak submits frog-bug | |||
moritz_ | masak: nested classes are documented to be no working on the status page (just FYI) | 11:35 | |
masak | that's ok. | ||
they also shouldn't be emitting Null PMC access errors. :) | 11:36 | ||
moritz_ | aye | ||
moritz_ is pleased to notice that some core modules are deprecated in blead perl | 11:38 | ||
11:40
rfordinal3643 left
11:42
rfordinal3643__ left
11:43
rfordinal3643 joined
11:54
frederico left,
chturne joined
11:56
frederico joined
11:57
rfordinal3643jlj joined
12:02
rfordinal left
|
|||
masak | rakudo: sub foo { say "OH HAI" }; &foo = &say; foo | 12:05 | |
p6eval | rakudo 0eaf62: OUTPUT«» | ||
moritz_ | excuse me? | ||
masak | :) | ||
it's a bug, right? | |||
moritz_ | yes, but what is the bug? | 12:06 | |
masak | I reassigned &foo to &say. | ||
and Rakudo let me. | |||
moritz_ | that &foo is assignable? or that it doesn't print the "OH HAI"+ | ||
masak | that &foo is assignable. | ||
moritz_ | ok | ||
masak | the non-printing of "OH HAI" is just a consequence of &foo being assignable. | ||
masak submits rakudobug | 12:07 | ||
12:15
rfordinal3643 left
12:17
ruoso joined
|
|||
ruoso | bom dia, #perl6 | 12:17 | |
masak | o/ | 12:19 | |
rakudo: sub funny-smiley {}; say &funny-smiley.signature.perl | |||
p6eval | rakudo 0eaf62: OUTPUT«:()» | ||
masak | :() | ||
moritz_ | \o| | 12:20 | |
masak | rakudo: sub zero(0) {}; say &zero.signature.perl | 12:21 | |
p6eval | rakudo 0eaf62: OUTPUT«:(Int ::TYPE_CAPTURE18 where all({ ... }))» | ||
masak ponders whether to contribute a patch for that | |||
rakudo: say (:()).WHAT | 12:23 | ||
p6eval | rakudo 0eaf62: OUTPUT«The opcode 'descalarref_p' (descalarref<1>) was not found. Check the type and number of the argumentsin Main (src/gen_setting.pm:3469)» | ||
masak | whoa! | ||
masak submits rakudobug | |||
what is this, a year ago? | |||
12:27
PZt joined
|
|||
moritz_ | masak: betterworld reported a rakudo segfault with a 13 character program :-) | 12:28 | |
masak | impressive! | ||
moritz_ | I'm trying to convince him to write a bug report | 12:29 | |
masak | of course he should? why is there even hesitation? :) | ||
moritz_ | dunno | 12:30 | |
say 4.HOW.HOW | |||
masak | rakudo: say 4.HOW.HOW | ||
p6eval | rakudo 0eaf62: ( no output ) | ||
12:30
rfordinal3643jlj left
|
|||
masak | indeed. | 12:30 | |
betterworld++ | |||
dalek | kudo: e9a7966 | moritz++ | t/harness: submit smoker name to smolder, jdv79++ |
12:40 | |
12:44
iblechbot left
|
|||
pugs_svn | r28375 | pmurias++ | [vivjs] make say print stuff in the firebug console in --jsx mode | 12:52 | |
r28376 | pmurias++ | [vivjs] extracted vivjs from viv into src/perl6/vivjs | |||
pmurias | diakopter: i extracted vivjs from viv if we have a better name we could rename it now | 12:53 | |
moritz_ | does that mean the invocation to run vijs has changed? | 12:57 | |
pmurias | yes | 12:58 | |
moritz_ | to? | ||
pmurias | it's now vivjs | ||
moritz_ | pmurias: does it still work together with 'make snap'? | 12:59 | |
pmurias | what's that? | ||
moritz_ | that's the make target in src/perl6/ which the evalbot uses to compile STD.pm | ||
afk | 13:00 | ||
pmurias | moritz_: coping vivjs should do it | ||
13:03
zloyrusskiy left
|
|||
pmurias | diakopter: i'm disabling the interpreter took * seconds thing as it's annoying | 13:05 | |
pugs_svn | r28377 | pmurias++ | [vivjs] slight cleanup | ||
masak | phenny: tell moritz_ does this help to make a more complete modules graph for proto? gist.github.com/191981 | 13:06 | |
phenny | masak: I'll pass that on when moritz_ is around. | ||
13:09
scottp left
|
|||
pugs_svn | r28378 | jimmy++ | [Spec/S02-bits.pod]wrapping the line. | 13:18 | |
13:28
SmokeMachine joined
|
|||
pmurias | ruoso: gcc -L. -lperl -I . t-smopp5/basic.c should link with libperl.a? | 13:28 | |
diakopter | vijs: say 3 | ||
p6eval | vijs 28370: OUTPUT«read_file 'js/json2.js' - sysopen: No such file or directory at viv line 165» | ||
pmurias | diakopter: hi | 13:29 | |
diakopter | hi | ||
13:29
JimmyZ joined
|
|||
pmurias | diakopter: does the extracted vivjs work for you? | 13:30 | |
diakopter | why did you use vivjs instead of vijs | ||
it doesn't matter though; hopefully someone will contribute a better name :) | 13:31 | ||
pmurias | i forgot it's vijs | 13:32 | |
diakopter | np | ||
technically I could work on fixing it in p6eval, but I don't have access yet to the new p6eval chroot on my vps | 13:33 | ||
ruoso | pmurias, -l is for dynamic linking I think | 13:35 | |
pmurias | and for static? | 13:38 | |
diakopter | since when is svn update supposed to delete files with uncommitted changes without prompting | ||
I guess I'm supposed to check whether the directory holding the files with uncommitted changes has been deleted :[ :[ | 13:39 | ||
pmurias | svn is bug ridden | ||
diakopter | :[ | ||
there went a couple hundred lines | 13:40 | ||
13:41
JimmyZ_ joined
|
|||
Patterner | -l is for telling the linker the name of a library. -static and -shared are for the type of linking. | 13:42 | |
diakopter | ok; I was wrong; it only said it D them; the modified files are still there in the original dir | 13:47 | |
but it did delete the unmodified files | |||
you'd think the console output of svn update would say 'D this_file but din't actually delete it' | 13:48 | ||
13:49
payload left
|
|||
diakopter | (but no, it just said:) | 13:52 | |
D js/builtins.js | |||
D js/interp.js | |||
D js/README | |||
D js/libBigInt.js | |||
which frightened me. :) | |||
13:59
alester joined,
synth joined
14:00
iblechbot joined
14:01
rfordinal joined
14:05
JimmyZ left
14:08
icwiener joined
14:10
crythias joined
|
|||
crythias | perl6: say Hello, world! | 14:11 | |
p6eval | elf 28378: OUTPUT«Parse error in: /tmp/lb2nZYzVMPpanic at line 1 column 0 (pos 0): Can't understand next input--giving upWHERE: say WHERE:/\<-- HERE STD_red/prelude.rb:99:in `panic' STD_red/std.rb:76:in `scan_unitstopper' STD_red/std.rb:224:in `comp_unit' | ||
..STD_red… | |||
..rakudo 0eaf62: OUTPUT«Confused at line 2, near "!"in Main (src/gen_setting.pm:3469)» | |||
..pugs: OUTPUT«***  Unexpected "!" expecting "::", dot, ":", "(", term postfix, operator or "," at /tmp/yfP38kcNWC line 1, column 74» | |||
masak | crythias: you need quotes, not just massive amounts of whitespace :P | ||
crythias | well, that's not what the intro says | ||
masak | which intro? | 14:12 | |
crythias | the whatchacallit. motd | ||
topic | |||
masak looks | |||
crythias | say 3 | ||
perl6: say 3 | |||
p6eval | elf 28378, pugs, rakudo 0eaf62: OUTPUT«3» | ||
crythias | ok. but that's a number. | ||
masak | well, there's a difference between 3 and 'hello world'. | ||
3 is a number, it doesn't need quotes. | 14:13 | ||
crythias | say 3+3 | ||
pmurias | diakopter: commit early, commit often and you'll limit the amount of work that gets wasted | ||
crythias | perl6: say 3+3; | ||
p6eval | elf 28378, pugs, rakudo 0eaf62: OUTPUT«6» | ||
moritz_ | masak: I found the source of my weird testing bug... ~/.perl6/lib contained a Test.pm which tainted rakudo's spectest | ||
phenny | moritz_: 13:06Z <masak> tell moritz_ does this help to make a more complete modules graph for proto? gist.github.com/191981 | ||
moritz_ | thanks phenny | ||
14:13
muixirt left
|
|||
masak | moritz_: that's happened to me also. let's eradicate all Test.pm imposters before it's too late! | 14:14 | |
crythias | perl6: say "Test.pm" | ||
masak | hm, 'impostors'? | ||
p6eval | elf 28378, pugs, rakudo 0eaf62: OUTPUT«Test.pm» | ||
moritz_ | and merge back all changes worth keeping to rakudo's Test.pm | ||
masak | aye. | ||
though most are probably just old versions. | |||
moritz_ | masak: re project list, any data between 2009-02 and 2009-06? | 14:15 | |
erm, 2009-03 and 2009-06 | |||
masak looks | |||
oh, indeed. | 14:16 | ||
I'll update the gist. | |||
moritz_ | great | ||
btw I found that my way of obtaining the data is unreliable | |||
masak | having done it manually, I'm not surprised :P | 14:17 | |
moritz_ | it uses the @date form of git revisions | ||
but in that case the date refers to the reflog, not to the commit date of the objects | |||
masak | there was a merge around 2009-02-16, for example. it wasn't really possible to give accurate numbers for a while. | ||
14:17
KyleHa joined
|
|||
moritz_ | so it depends on when I updated my proto repo :( | 14:17 | |
masak | huh. | 14:18 | |
14:18
abra joined
|
|||
masak | would you prefer one data point per date, or several? | 14:19 | |
moritz_ | dontcare | ||
oh wait | |||
at most one data point per date | 14:20 | ||
but I don't need a datapoint for every date | |||
masak | right. | ||
diakopter | pmurias: that might be a good point, if I felt responsible in any way for deleting/losing my own work (and if that had actually happened). | 14:21 | |
moritz_ | gnuplot++ # being smart enough when plotting dates | ||
diakopter: did the 'svn up' delete files that had local modifications? | 14:22 | ||
diakopter | no, as I stated above | ||
moritz_ | I didn't read all the backlog | ||
masak | moritz_: gist.github.com/191981 | ||
14:23
justatheory joined
|
|||
diakopter | I was perturbed that the js/ directory was deleted at all; I didn't realize I was assenting to that when I said it was ok for pmurias to fork viv | 14:25 | |
moritz_ | I thought it was just moved | 14:26 | |
masak: rakudo.de/proto-projects-list.png updated | |||
diakopter | it might have been 'svn move'd, but it didn't merge my changes before the move. | ||
14:26
FCO joined
|
|||
masak | moritz_: nice! | 14:27 | |
moritz_ | diakopter: that's one of svn's shortcomings | ||
masak | something in early July doesn't look right, though... | ||
s/July/June/ | 14:28 | ||
moritz_ | that might have been the period where I didn't update proto for qutie some time | 14:29 | |
masak | bah, let's see if I can't automate this after all... | 14:30 | |
moritz_ | a better method for obtaining the file contents at a given date would be most welcome | 14:32 | |
14:33
SmokeMachine left
14:35
__ash__ joined
14:39
JimmyZ_ left
14:40
Psyche^ joined
|
|||
pugs_svn | r28379 | moritz++ | [src/perl6] update 'make snap' to symlink vivjs/, not js/ | 14:41 | |
14:41
Patterner left,
Psyche^ is now known as Patterner
14:42
__ash__ left
14:44
NorwayGeek|Away left
|
|||
masak | hm, how do I show the contents of a file from another revision/commit, preferably without using git-checkout? | 14:44 | |
I asked on #git, but they're having so much fun right now I don't think they saw my question. :) | 14:45 | ||
BinGOs | cherry-pick perhaps ? | 14:46 | |
masak | well, I don't want to apply any new changes, just navigate the past. | ||
BinGOs | yeah, it appears that will apply the commit. | 14:47 | |
BinGOs goes back to idling. | 14:48 | ||
Infinoid | masak: git show <rev>:path/file | ||
masak | Infinoid: thanks. | ||
14:49
mberends left
14:50
SmokeMachine joined
|
|||
pugs_svn | r28380 | moritz++ | [evalbot] fix path to vivjs | 14:54 | |
14:54
p6eval left,
p6eval joined
|
|||
moritz_ | vijs: say 3 | 14:54 | |
p6eval | vijs 28379: OUTPUT«3» | ||
diakopter | moritz_: thanks :D | 14:55 | |
14:56
lucs_ joined
14:59
frederico left
|
|||
masak | moritz_: new data, completely undoctored. I hope I got it right. it doesn't seem to square exactly with the previous figures. gist.github.com/191981 | 14:59 | |
15:00
FCO left
|
|||
moritz_ | masak: updated rakudo.de/proto-projects-list.png with your new data | 15:04 | |
masak | still a strange discontinuity in June... | 15:06 | |
moritz_ | anyway, for looking at trends it's good enough | ||
masak | moritz_: I can't help but point out that "Date" collides with... a date. | ||
moritz_ | masak: should I remove the label altogether? | 15:07 | |
pugs_svn | r28381 | diakopter++ | [vijs] implement Bools & rudimentary (guessing :) Bool coercion, also trailing if condition on statement | ||
masak | possibly. | 15:08 | |
diakopter | vijs: say 3 if 0; say 2 if True; | ||
p6eval | vijs 28379: OUTPUT«2» | ||
moritz_ | masak: done | ||
diakopter | perl6: say 3 if 0; say 2 if True; | 15:09 | |
moritz_ | masak: would you like to have the scripts in the proto repo? | ||
p6eval | pugs, rakudo 0eaf62: OUTPUT«2» | ||
..elf 28380: OUTPUT«Can't locate object method "Bool" via package "True" (perhaps you forgot to load "True"?) at (eval 123) line 6. at ./elf_h line 5881» | |||
TimToady | \⚉/ | ||
masak | moritz_: that might be a good idea. feel free to commit. | ||
moritz_ | masak: will do that from $home later today/tonight | ||
masak | TimToady: nice, long arms, there. :) | ||
moritz_ | TimToady: angeber :-) | ||
(angeber = poser) | 15:10 | ||
rakudo: class A { method b() { } }; A.new.b(3) | |||
p6eval | rakudo 0eaf62: OUTPUT«positional inside named args at position 2in method A::b (/tmp/ReMxAVMt4T:2)called from Main (/tmp/ReMxAVMt4T:2)» | ||
15:15
Student joined
|
|||
diakopter | perl6: say True if "0" | 15:15 | |
p6eval | elf 28381, pugs, rakudo 0eaf62: ( no output ) | ||
diakopter | vijs: say True if "0"; | 15:16 | |
p6eval | vijs 28379: ( no output ) | ||
diakopter | vijs: say True | ||
p6eval | vijs 28379: OUTPUT«1» | ||
diakopter | perl6: say True | ||
p6eval | pugs, rakudo 0eaf62: OUTPUT«1» | 15:17 | |
..elf 28381: OUTPUT«True» | |||
moritz_ | diakopter: see t/spec/S03-operators/context-forcers.t for inspiration | ||
crythias | vijs: say True if diakopterrocks=1; | ||
p6eval | vijs 28379: OUTPUT«Undeclared routine: diakopterrocks used at line 1» | ||
crythias | vijs: say True if theRunningMan>theCabbagePatch | 15:18 | |
p6eval | vijs 28379: OUTPUT«Undeclared routines: theCabbagePatch used at line 1 theRunningMan used at line 1execute(): execute error: undefined not yet implemented; srsly!!?!?last: termish0,1,2,phase,postDo,eval_args,invoker,context at vivjs line 66.» | ||
15:19
iblechbot left
|
|||
moritz_ | vijs: say True; | 15:21 | |
p6eval | vijs 28379: OUTPUT«1» | ||
diakopter | vijs: say True # breaks :D | ||
p6eval | vijs 28379: OUTPUT«1» | 15:22 | |
diakopter | I mean | ||
vijs: say True if False # breaks :D | |||
p6eval | vijs 28379: OUTPUT«execute(): execute error: TypeError: Cannot read property 'result' of undefined at vivjs line 66.» | ||
15:23
payload joined
15:24
am0c left
15:27
cmv left
|
|||
pugs_svn | r28382 | jimmy++ | [zh-cn/syn/S02-bits.pod]added more chinese description, just warm-up. | 15:28 | |
15:35
anonymous5783 joined
15:36
dakkar left
15:41
masak left,
nihiliad joined
15:43
ejs1 left
15:47
payload left
15:53
ejs joined
15:58
a2n joined
16:03
__ash__ joined
16:04
ejs1 joined
16:05
a2n left
|
|||
crythias | I tried to think about perl being prel (putting regular expressions linearly) but then I also thought .. what the heck does this have to do with keeping my hair nice and clean? Until I had someone regularly express that to me, for which, of course, I was grateful. | 16:06 | |
diakopter | I misread prel for purel, and I thought, "you put Purel in your hair?" | 16:07 | |
16:08
anonymous5783 left
|
|||
pugs_svn | r28383 | diakopter++ | [vijs] make single-statement statement_lists work | 16:08 | |
crythias | of all nits to pick... | 16:09 | |
16:11
payload joined
16:12
ejs left
16:13
hercynium joined
|
|||
pugs_svn | r28384 | diakopter++ | [vijs] make single-statement statement_lists with a false trailing condition work :) | 16:14 | |
diakopter | vijs: say 2 if 0 | 16:15 | |
p6eval | vijs 28379: ( no output ) | ||
diakopter | vijs: say 2 if 1 | ||
p6eval | vijs 28379: OUTPUT«2» | ||
TimToady | vijs: say (2 if 0) | 16:16 | |
p6eval | vijs 28379: OUTPUT«Undef» | ||
diakopter | rakudo: say (2 if 0) | ||
p6eval | rakudo 0eaf62: OUTPUT«» | ||
TimToady | well, I suppose that's about as close as you can get to Nil so far | ||
but rakudo is correct here | 16:17 | ||
crythias | Especially if you don't want to violate the restraining order. | ||
TimToady | a Nil interpolates () into a list | ||
pugs_svn | r28385 | diakopter++ | [vijs] make the borogoves more mimsy | 16:18 | |
TimToady | around here I usually have to restrain the violation orders | ||
diakopter | pugs: say (2 if 0) | 16:20 | |
p6eval | pugs: OUTPUT«***  Unexpected "if" expecting operator or ")" at /tmp/o6Unwpdbl7 line 1, column 8» | ||
16:20
ejs2 joined
|
|||
crythias | TimToady rearranged is y Do it, Mat? | 16:20 | |
diakopter | would the real TimToady please stand up, please stand up? | 16:21 | |
pmichaud | good morning, #perl6 | 16:25 | |
diakopter | or I'm a Dotty | ||
crythias | gotta love those dotty order violators. | 16:26 | |
diakopter | pmichaud: 'morn | ||
TimToady | pmichaud: \⚉/ | ||
diakopter | don't be mournin' | ||
TimToady | just keeping everyone honest about their unicode :) | 16:27 | |
pmichaud | TimToady: got time for two questions about Cursor.pmc ? | ||
TimToady | soitnly | ||
maybe diakopter can answer them :) | |||
diakopter has been reading it a bit lately | 16:28 | ||
pmichaud | currently Cursor.pmc has a number of methods like add_macro, add_enum, etc. Would those more properly be placed into STD itself, or should they exist for all Cursor objects? | ||
(do_need, do_use, etc.) | |||
TimToady | they're probably more related to STD, yes, but done in Cursor because gimme5 wasn't up to translating it yet... | 16:29 | |
pmichaud | okay | ||
that's what I figgered | |||
second question is longer | |||
diakopter starts typing the answer sooner | |||
16:29
ejs1 left
|
|||
TimToady | but also because implementation kinda depends on the backend in P5, so impl dependent | 16:30 | |
pmichaud | currently Cursor.pmc does the bulk of its work using lazymap and closures | ||
TimToady | well, tries to avoid lazymap as much as possible | ||
pmichaud | whereas PGE has done it by inlining the code | ||
for example, PGE actually builds an inlined loop for handling the star quantifier, and runs that loop relatively lazily | 16:31 | ||
TimToady | which is more or less what all the "r" variants do under ratcheting | ||
pmichaud | recognizing that Cursor.pmc is really using lazymap as a form of continuation handling | ||
do you have a gut feeling for whether PGE should move more towards the way that Cursor is handling things, or stick with the "generate a block of inlined code"? | |||
PGE has gone with the inlined code approach because subroutine calls in parrot tend to be a bit expensive, so it's betting that the inlined code approach is more efficient. | 16:32 | ||
That could be entirely wrong, though. | |||
TimToady | well, in theory the VM should do that for you :) | ||
pmichaud | should be inlining the code? heh | 16:33 | |
that's a nice theory. | |||
TimToady | not just theory anymore for JS | ||
with tracing | |||
anyway, while I've put some effort into inlining some stuff in the generated STD.pmc code, that could be construed (eventually) as a microoptimizaiton | 16:34 | ||
diakopter interjects: mepostulates the non-inlined approach would be more favorable for LTM, since more state can be cached, per arguments-set | 16:35 | ||
TimToady | in a memoization sense, you mean? | ||
diakopter | that was my [probably dead wrong] thought, yeah | 16:36 | |
TimToady | well, Cursor does memoize a number of things explicilty | ||
TimToady has tagnly figners toady | |||
anyway, most of the overhead of STD matching doesn't seem to be in the quantifiers | 16:38 | ||
16:38
crythias left
|
|||
pmichaud | oh | 16:38 | |
where is the overhead? | |||
in the alternations? | |||
TimToady | sec, ran NYTProf just yesterday... | ||
pmichaud | the other advantage/reason for the mechanism that PGE currently uses is that it holds down GC pressure by not creating lots of gc-able objects | 16:39 | |
since object creation and collection is a bit expensive for parrot also | |||
anyway, after looking at things over the past couple of weeks, I've come to a few conclusions (more) | 16:40 | ||
1. I'm basically rewriting PGE from the ground up to be able to better handle protoregexes. It might even get a new name :) | |||
2. I have three basic approaches for the code that PGE generates | |||
2a. Continue to generate inlined code, as PGE has done before. Has the advantage that I already have existing code to draw from and we know it works somewhat okay, disadvantage might be that it's less portable to non-Parrot platforms (but I suspect that could be fixed as well) | 16:41 | ||
2b. Use something much closer to Cursor,pmc, which basically uses closures and lazymap to handle backtracking | 16:42 | ||
diakopter | (2b similar to my grammar-interpreter as parser-generator) | ||
pmichaud | 2c. Do something halfway between the two -- inline the code but use continuations to handle the loops and other constructs | 16:43 | |
diakopter | (2c even more similar to... ) | ||
pmichaud | (currently PGE uses simple stacks to handle "lightweight continuations" | 16:44 | |
[particle] | i suspect 2a is easiest to debug in current parrot | ||
pmichaud | actually, they may be about equal | ||
oh, another observation: it looks very likely that I'll be able to write much or most of this in NQP | |||
which might have some big wins for portability | 16:45 | ||
TimToady | you can seen at least the top index.html at wall.org/~larry/nytprof | ||
[particle] | i mean to say, debug *and profile* | ||
TimToady | but I didn't copy over all the subfiles because some of them are huge | ||
pmichaud | [particle]: actually, I'd expect 2b to be easier to profile -- more subroutine entry/exit points | 16:46 | |
2a makes a regex into a single subroutine | |||
[particle] | hrmm, true | ||
TimToady | taking GC pressure into account is also potentially considered a microoptimization with good generational GC | ||
[particle] | i was thinking that we can't really profile yields well yet | ||
but it would be easier than One Big Sub | 16:47 | ||
16:47
stephenlb joined
|
|||
pmichaud | [particle]: oh, with 2b/2c we probably don't have yields | 16:47 | |
16:48
__ash__ left
|
|||
pmichaud | i.e., the "coroutines" are actually managed as list of cursors and closures | 16:48 | |
*lists | |||
[particle] | well, it seems to me that 2c can be more easily accomplished today, since you already have the inlining code ready, and that you can move from 2c to 2b | ||
so perhaps 2c is the practical way to go | 16:49 | ||
pmichaud | at the moment they all seem equal-effort | ||
PerlJam | /me votes for 2c since you can vary the components of the mix from 0 to 100% | ||
16:49
iblechbot joined
|
|||
pmichaud | true | 16:49 | |
PerlJam | what [particle] said about practicality | ||
pmichaud | TimToady: nytprof seems to put a fair bit of time in SUBSUMEr | 16:50 | |
TimToady | the main thing is you have to be very clear about what is mutable/immutable and never use continuations for anything mutable | ||
pmichaud | copying a capture set into multiple cursors seems like it could get expensive (more) | 16:51 | |
PGE also avoids that, but at the cost of making its cursors mutable, which I agree isn't really desirable | |||
TimToady | thing is, when you're ratcheting you can cheat with a mutable cursor | ||
which is a lot of the time | 16:52 | ||
pmichaud | well, it's a lot of the time in STD :) | ||
and in parsers | |||
but not necessarily regexes :) | |||
TimToady | nod | ||
pmichaud | and not necessarily other grammars | ||
*hll grammars | |||
still, the point is a goodone | |||
16:53
explorer left
|
|||
pmichaud | does STD currently cheat with mutable cursors in ratcheting? | 16:53 | |
if so, I wouldn't expect SUBSUMEr to be quite so high. Or I'd be concerned about the time cost of SUBSUME without-the-r :) | 16:54 | ||
I have to go pick up kid from school (early release today) | |||
TimToady | SUBSUMEr still makes a fresh cursor | ||
pmichaud | okay, that's what I thought it did | 16:55 | |
I'll be back in an hour-ish | |||
I'll backlog for other comments and thoughts -- thanks, this is all hugely helpful | |||
16:57
__ash__ joined
17:09
MrRandom joined
|
|||
MrRandom | Hello, Which implementation of Perl 6 will be official one? | 17:11 | |
TimToady | All of them | ||
they're not Perl 6 if they don't pass the test suite | |||
pugs_svn | r28386 | diakopter++ | [vijs] implement leading if conditional - if 1 { say 3 } | ||
diakopter | vijs: if 0 { say 3 }; if True { say True ~ ' and ' ~ True } | 17:12 | |
p6eval | vijs 28379: OUTPUT«1 and 1» | ||
diakopter | std: if 0 { say 3 } if True { say True ~ ' and ' ~ True } | ||
p6eval | std 28379: OUTPUT«===SORRY!===Missing semicolon or comma after block at /tmp/0GySzft0I0 line 1:------> if 0 { say 3 } ⏏if True { say True ~ ' and ' ~ True } expecting any of: infix stopper statementUndeclared routine: if used at line | ||
..1FAILED 00:01 95m» | |||
diakopter waits | 17:13 | ||
lots o backtracking methinks | |||
MrRandom | Ok, so which implementation is 'the best' ? Which is worth of involve in? | ||
diakopter | MrRandom: whichever one's host language[s] you enjoy writing the most? | ||
TimToady | there are many different dimensions to be 'best' in | 17:14 | |
diakopter | or whichever one's code repository software you enjoy using the most | ||
17:14
ejs1 joined
|
|||
diakopter | :) | 17:14 | |
MrRandom | diakopter: c# | 17:15 | |
diakopter | well, it's just you and I in that camp, and perhaps jnthn on a good day | ||
17:17
ejs1 left,
cmv joined
17:18
abra left
|
|||
TimToady | diakopter: what does "lots o backtracking" refer to? | 17:21 | |
diakopter | failing on the std: input seemed very much slower than succeeding on the prior input | ||
maybe just p6eval host busyness | 17:22 | ||
17:22
ejs2 left,
MrRandom left
|
|||
TimToady | time appears to be identical here, modulo my CPU ticker | 17:23 | |
diakopter | ok | 17:24 | |
sry for the noise | |||
TimToady | well, but it's an interesting question | ||
fact is that the error can fail as soon as sees the second { | |||
diakopter | if 0 { say 3 } if else { say True ~ ' and ' ~ True } | 17:25 | |
TimToady | so in theory it could be quite a bit faster to fail, if there's lots more | ||
diakopter | std: if 0 { say 3 } if else { say True ~ ' and ' ~ True } | ||
p6eval | std 28379: OUTPUT«===SORRY!===Missing semicolon or comma after block at /tmp/1eu9H1sm9r line 1:------> if 0 { say 3 } ⏏if else { say True ~ ' and ' ~ True } expecting any of: infix stopper statementUndeclared routines: else used at line 1 | ||
.. if used at li… | |||
diakopter | std: if 0 { say 3 } if XXX | ||
p6eval | std 28379: OUTPUT«===SORRY!===Missing semicolon or comma after block at /tmp/wHZN9tSPB0 line 1:------> if 0 { say 3 } ⏏if XXX expecting any of: infix stopper statementUndeclared name: XXX used at line 1Undeclared routine: if used at line | ||
..1FAILED 00:0… | |||
diakopter | std: if 0 { say 3 } if { | ||
p6eval | std 28379: OUTPUT«===SORRY!===Missing semicolon or comma after block at /tmp/2109IVn99E line 1:------> if 0 { say 3 } ⏏if { expecting any of: infix stopper statementFAILED 00:02 95m» | ||
TimToady | might actually catch it sooner | ||
but it might be transmogrifying a later error into the actual error | 17:26 | ||
don't remember | |||
diakopter | it's thinking fourth dimensionally | ||
TimToady | actually, it's just an extra check at the end of a statement to see if there's trailing trash | 17:27 | |
which it might or might not have got to by backtracking | 17:28 | ||
pmichaud | hmmm, I wonder if I could speed up cursor generation by making the captures COW | 17:39 | |
TimToady | pmichaud: you can look at all the nytprof data now, if you don't mind slow uploading over DSL | 17:40 | |
maybe, but the position changes constantly, so probably not much gain | |||
for the spots where only the position changes, I use cursor_tweak to mutate the position in the current cursor (when I think I can get away with it) | 17:41 | ||
pmichaud | right | ||
I don't mind creating multiple cursors, it's cloning the existing capture set that looks expensive to me | |||
TimToady | on the nytprof stuff, don't try going into STD.pm because nytprof doesn't know about STD.pmc | ||
pmichaud | (granted it's a shallow clone) | 17:42 | |
TimToady | if there are long stretches with the same non-pos data, that could be broken out and referenced by a [pos,immutableptr] pair | 17:43 | |
pmichaud | right | ||
TimToady | you still have to clone for submatches though | ||
pmichaud | that's kinda where I've been heading | ||
TimToady | or go back to an approach I tried once before I knew what I was doing, and keep all the bindings as a linked list | 17:44 | |
pmichaud | ick | ||
not going there :) | |||
TimToady | but then the clone only carries a linked list pointer | ||
pmichaud | interesting | 17:45 | |
TimToady | but yeah, Cursor currently depends on the hashness of itself to make it also a proto Match | ||
17:45
hercynium left,
araujo joined
|
|||
TimToady | the problem with linked list is that you have to be able to manufacture a Match-ish object any time the user wants $<foo> | 17:46 | |
pmichaud | well, here's the sort of thing I'm looking at | ||
/ [ <foo>+ <bar> ] [ abc ]* / | |||
ooops | |||
/ [ <foo>+ <bar> ]* [ abc ]* / | |||
anyway, we get through the first part and end up with some cursors that have $<foo> and $<bar> in them | 17:47 | ||
TimToady | which are already arrays because the outer rule set them up that way | ||
pmichaud | but in the [ abc ]* part (which could be more complex, of course), we end up making clones of the hash containing $<foo> and $<bar>, even though they remain identical | 17:48 | |
seems to me that all of the cursors created for the latter part could share the same hash | |||
and that they're copy-on-write, so that if something later needs to modify a cursor, we clone it then | |||
araujo | hello | 17:51 | |
pmichaud | anyway, looks like that would work for me, and it's likely to be even more efficient than what PGE is currently doing | ||
17:51
__ash__ left
|
|||
pmichaud | I did have a spec question, however | 17:52 | |
given a regex like | |||
/ foo [ bar || <xyz>+ ] / | 17:53 | ||
are we guaranteed that the resulting match object will have an Array in $<xyz> ? Or does the Array exist only if the <xyz>+ part was matched? | |||
i.e., if we matched the 'bar' part, is $<xyz> undef ? | |||
(or non-existent) | |||
TimToady | most of the clones are just copying pointers to bindings anyway | ||
it's probably the keys that are expensive | 17:54 | ||
pmichaud | in PGE's case, it's likely to be the creation of the extra one-per-cursor hashes | ||
and yes, shallow cloning hashes in Parrot isn't cheap at the moment either :-| | 17:55 | ||
(it's cheaper than deep cloning, obviously, but there's not a built-in mechanism to do it) | |||
in my regex question above, I think that $<xyz> doesn't exist if we matched the 'bar' part | 17:56 | ||
TimToady | I believe STD inits the array anyway, checking | 17:57 | |
pmichaud | well, the example that proves the case is | ||
/ foo [ bar <xyz> || <xyz>+ ] / | |||
if we match the bar part, then $<xyz> isn't an array | |||
TimToady | STD will make it an array anyway | 17:59 | |
pmichaud | what's the correct spec? | ||
TimToady | I think STD's behavior is defensible, insofar as [...] doesn't submatch, and forces branches to share | 18:01 | |
pmichaud | I think that doesn't match S05, though | ||
checking | |||
TimToady | and STD is speck too :P | ||
diakopter | speckled | ||
lisppaste3 | TimToady pasted "translation of pm's first regex" at paste.lisp.org/display/87565 | 18:04 | |
pmichaud | S05:2970 | ||
and S05:3022 | 18:05 | ||
how does STD translate / foo [ bar <xyz> | baz <xyz> ] / ooc? | |||
TimToady | but S05:3039 | 18:06 | |
pmichaud | 3039 shows the case where there's a repeated subrule outside of the brackets | ||
i.e., I agree that / foo [ bar <xyz> | baz ] <xyz> / always ends up with $<xyz> being an array | 18:07 | ||
because there's a scope alternation where it's repeated more than once | |||
18:07
donaldh left
|
|||
TimToady | missing quant? | 18:07 | |
pmichaud | no | ||
TimToady | I don't think that one ends up with an array | 18:08 | |
18:08
donaldh joined
|
|||
pmichaud | that's what S05:3039 is saying, though | 18:08 | |
the example from S05:3039 is | |||
/ <file> ':' [ <file> | none ] / | |||
and it says that $<file> is an array | |||
TimToady | checking... | ||
pmichaud | because there are two <file>'s in the same scope | ||
but that's different from | 18:09 | ||
/ foo [ <file> | none ] / | |||
because there's only one $<file> in the scope | |||
same with | |||
TimToady | gimme5 would run about 5 times faster without unicode... | ||
pmichaud | / foo [ abc <file> | def <file> ] / | ||
each alternation ends up with only one $<file>, so no array | |||
TimToady | the latter STD doesn't make an array | 18:11 | |
and / foo <xyz> [ bar <xyz> | baz ] / does make an array, so I think STD is sane | 18:14 | ||
pmichaud | okay | ||
TimToady | well, it's gimme5 doing it | ||
pmichaud | so then what about | ||
/ foo [ bar <xyz>+ | baz ] / | |||
TimToady | it will certainly be an array | ||
pugs_svn | r28387 | diakopter++ | [vijs] flesh out statement_control__S_if; implement elsif (multiple, too), else blocks | ||
TimToady | even if you match baz | ||
pmichaud | and then | ||
/ foo [ bar <xyz>+ | baz <xyz> ] / | 18:15 | ||
? | |||
TimToady | it will still certainly be an array, I think | ||
diakopter | vijs: if 0 { say 3 } elsif 0 { say 4 } elsif 0 { say 6 } else { say 5 } | ||
p6eval | vijs 28379: OUTPUT«5» | ||
pmichaud | okay, so the quantifiers can reach across alternations? | ||
diakopter | vijs: if 0 { say 3 } elsif 0 { say 4 } elsif 1 { say 6 } else { say 5 } | ||
p6eval | vijs 28379: OUTPUT«6» | ||
TimToady | inside [], yes, but maybe not inside () | ||
checking | |||
pmichaud | right | ||
diakopter | vijs: if 0 { say 3 } elsif 1 { say 4 } elsif 0 { say 6 } else { say 5 } | ||
p6eval | vijs 28379: OUTPUT«4» | ||
pmichaud | oh wait | 18:16 | |
it I would think it would need to be that way inside () also | |||
diakopter | whee | ||
pmichaud | because of | ||
TimToady | mebbe | ||
pmichaud | / bar <xyz>+ | baz <xyz> / | ||
does that force $<xyz> to be an array? | |||
okay, I get it | 18:17 | ||
"lexical scope" doesn't include alternations (more) | |||
from S05 | 18:18 | ||
"If a subrule appears two (or more) times in any branch of a lexical | |||
scope (i.e. twice within the same subpattern and alternation), or if the | |||
subrule is quantified anywhere within a given scope, | |||
... | |||
18:18
rjh left
|
|||
pmichaud | so, it's the appearance twice within a branch of a lexical scope | 18:18 | |
18:18
lmc joined
|
|||
pmichaud | or quantified anywhere in the scope | 18:18 | |
where brackets and parens define the "scope" | |||
I had been interpreting it that alternations defined a scope | |||
so | 18:19 | ||
/ foo [ bar | <xyz>+ ] / always ends up with an $<xyz> empty array | |||
sorry, only parens define lexical scopes | 18:20 | ||
similarly, / foo [ bar <xyz> | <xyz>+ ] / ends up with $<xyz> as being an array, because it's quantified within the scope | |||
even though it's not quantified in the bar branch | |||
18:21
rjh joined
|
|||
TimToady | currently / bar <xyz>+ | baz <xyz> / appears to always make an array | 18:22 | |
pmichaud | I'm fine with that, based on my new understanding | ||
18:22
SmokeMachine left,
donaldh left
|
|||
pmichaud | instead of "lexical scope" perhaps we should say "capturing scope" ? | 18:22 | |
where parens define a new capturing scope? | |||
"lexical scope" seems to me like it ought to be defined with curlies. | 18:23 | ||
buu | ingy: Hey, you around? | ||
TimToady | well, it's a matter of whether there's a sub-Match object | ||
pmichaud | right | ||
wait | |||
what do you mean by "sub-Match object"? | |||
TimToady | I mean the Match inside () is different than the Match outside it | ||
pmichaud | right | ||
because () creates a new capturing scope | 18:24 | ||
TimToady | with [] they share | ||
pmichaud | [] doesn't create a new capturing scope, it's in the same capturing scope | ||
18:24
NorwayGeek joined
|
|||
pmichaud | that's the current meaning of () and [], but S05 uses the phrase "lexical scope" for that | 18:24 | |
18:24
NorwayGeek left
|
|||
pmichaud | I'm wondering if "capturing scope" is more descriptive... especially since we now have the ability to define lexicals in regexes | 18:25 | |
er, lexical variables | |||
18:25
NorwayGeek joined
|
|||
sjohnson | rakudo: say [1, 2, 3].WHAT | 18:25 | |
p6eval | rakudo 0eaf62: OUTPUT«Array()» | ||
18:25
lucs left
|
|||
TimToady | well, but () is a lexical scope of sorts, since :i and such are lexically scoped | 18:26 | |
but then so is [] that way | |||
pmichaud | that's a "modifier scope" :) | ||
TimToady | so yeah, capture scope or some such | ||
sjohnson | is [] a reference like in p5? | ||
anonymous etc | |||
pmichaud | sjohnson: we don't really have references in p | ||
p6 | |||
TimToady | not inside regexen :) | ||
we try hard to hide all the references | |||
sjohnson | what is the difference in p6 with [] () ? both array contexts? | ||
TimToady | [] has a list context inside, () is a Parcel that doesn't know yet | 18:27 | |
18:27
donaldh joined
|
|||
pmichaud | sjohnson: [] creates an array, () is just a grouper. (1,2,3) becomes a Parcel | 18:27 | |
(it's the comma that creates the Parcel, not the parens) | 18:28 | ||
TimToady: okay, thanks for the spec clarification | |||
PGE currently follows my (incorrect) interpretation of scopes; I'll update it in the new version | |||
I like this way of thinking of it much better. | 18:29 | ||
TimToady | (1) is a degenerate Parcel | ||
diakopter | we don't serve their kind here | ||
TimToady | std: 2<3<4 | 18:30 | |
p6eval | std 28379: OUTPUT«===SORRY!===(Possible runaway string from line 1 to line 2)Whitespace required before < operator at /tmp/rL9admwpbs line 1:------> 2<⏏3<4 expecting escapeFAILED 00:01 95m» | ||
TimToady | diakopter: yeah, like that | ||
diakopter | std: <3 Perl>>0 | 18:33 | |
p6eval | std 28379: OUTPUT«ok 00:03 95m» | ||
TimToady | it probably just appended that to your 0 file :) | 18:34 | |
pmichaud | TimToady: S08 currently says that the comma creates the parcels, not the parens | ||
sjohnson | p6eval lost its cute plus sign | ||
TimToady | (1) is a virutal parcel, quickly anihilated | ||
pmichaud | okay | ||
TimToady | *virtual | ||
pmichaud | I'm fine with that | ||
18:34
diakopter sets mode: +v p6eval
|
|||
pmichaud | my $x = 1; say $x.WHAT # Int | 18:35 | |
18:35
donaldh left
|
|||
pmichaud | my $x = (1); say $x.WHAT # Int | 18:35 | |
18:35
diakopter sets mode: +v lambdabot
|
|||
pmichaud | my $x = (1,2); say $x.WHAT # Parcel ? | 18:35 | |
TimToady | probably not | 18:37 | |
(1,@x) as a Parcel has 2 elements | |||
18:37
donaldh joined
|
|||
TimToady | but = will evaluate the @x | 18:37 | |
I suspect | |||
18:38
leedo_ left
|
|||
pmichaud | oh, so then it becomes a List ? | 18:38 | |
18:38
leedo joined
|
|||
TimToady | seems likely | 18:38 | |
pmichaud | I think that works for me | ||
would it flatten in the case of | 18:39 | ||
my $x = (1, (2, 3)); | |||
TimToady | and \(1,@x) would maybe keep it a Parcel | ||
yes, I think it would flatten that even when assigned to $x | |||
pmichaud | okay | ||
S08 needs some updating there, then. | |||
TimToady | I suppose I should read it one of these months... | 18:40 | |
pmichaud | well, I think it was just added yesterday :) | ||
[particle] | are the specs still read-once? someone should unset that bit. | 18:41 | |
TimToady | course I could change my mind about it tomorrow too | ||
read once but write-many | |||
diakopter | WMRO | ||
pmichaud | README is write many, read never | 18:42 | |
TimToady is checking to see if his avocado is operative | |||
diakopter | someone the other day made the mistake of saying the specs are specifications. I quickly corrected them of that nonsense; they're speculations. | 18:43 | |
pmichaud | amen | ||
18:44
icwiener left
|
|||
pmichaud | okay, time to do some more branestorming | 18:44 | |
diakopter | I think that someone might have been myself :) | ||
18:45
crythias joined,
donaldh left,
donaldh joined
|
|||
pmichaud | TimToady: how are you producing the regex translations as in the nopastes? Is there a convenient command line tool for it? | 18:46 | |
TimToady | well, maybe they're SF, Specificational Fiction | ||
18:47
donaldh left
|
|||
TimToady | I was editing a rule into STD and running gimme5 on it, but one could probably just do that with a separate grammar, now that I think of it | 18:47 | |
18:47
donaldh joined
|
|||
pmichaud attempts | 18:48 | ||
TimToady | in fact, you can run gimme5 - and type a rule on the stdin | 18:50 | |
18:50
mberends joined
|
|||
diakopter adds gimme5 to p6eval ;) | 18:50 | ||
moritz_ | NOE | ||
diakopter | gimme5: prepare to be flood-kicked | 18:51 | |
TimToady | some of my jokes are almost funny too | 18:52 | |
diakopter permutes emphases on different words of that last | 18:53 | ||
crythias | So, a nun, a priest, and a rabbi walk into a bar. The bartender says, "What is this, some kind of joke?" | ||
diakopter | std: jokefail or fakefail | 18:54 | |
p6eval | std 28379: OUTPUT«Undeclared routines: fakefail used at line 1 jokefail used at line 1 or used at line 1ok 00:01 95m» | ||
18:56
justatheory is now known as RhodiumTode
|
|||
pmichaud | ah yes, gimme5 is helpful | 18:57 | |
TimToady++ | |||
18:57
RhodiumTode is now known as justatheory,
buubot left
|
|||
diakopter | std: my && 3 | 18:57 | |
p6eval | std 28379: OUTPUT«ok 00:02 125m» | ||
pmichaud | afk for a bit | 18:58 | |
diakopter | std, wait, what? | ||
18:59
buubot joined
|
|||
diakopter | buggo | 18:59 | |
18:59
molaf joined
|
|||
crythias | std: class jokefail { has $.value;}; class fakefail { has $.value }; jokefail.value=1; fakefail.value=2; say jokefail.value or fakefail.value; | 19:00 | |
p6eval | std 28379: OUTPUT«ok 00:01 96m» | ||
diakopter | std: my & &3 | 19:01 | |
p6eval | std 28379: OUTPUT«ok 00:03 124m» | ||
diakopter | soar confused | ||
19:02
SmokeMachine joined,
cmv left,
buubot left
|
|||
diakopter | rakudo: my & &3 | 19:03 | |
p6eval | rakudo 0eaf62: OUTPUT«Malformed declaration at line 2, near "& &3"in Main (src/gen_setting.pm:3469)» | ||
19:03
buubot joined
|
|||
diakopter | buubot: help | 19:04 | |
TimToady: std: my & &3 # what does this mean | 19:05 | ||
TimToady | you're &-ing an anonymous & variable with &3 | 19:06 | |
er, with 3 | |||
pmichaud | (my &) & 3 | ||
moritz_ | std: my $x + 3 | ||
p6eval | std 28379: OUTPUT«ok 00:02 96m» | ||
moritz_ | std: my $ + 3 | ||
p6eval | std 28379: OUTPUT«ok 00:02 96m» | ||
pmichaud | std: my $dog does Bite | 19:07 | |
p6eval | std 28379: OUTPUT«ok 00:01 96m» | ||
buubot | diakopter: Provides help text for a specific command. Try 'help echo'. See also the command 'plugins' to list all of the currently loaded plugins. | ||
diakopter | buubot: i c. | ||
buubot | diakopter: i am me | ||
crythias | perl6: my $milkshake="Brings all the boys to they yard."; say $milkshake; | ||
p6eval | elf 28387, pugs, rakudo 0eaf62: OUTPUT«Brings all the boys to they yard.» | ||
pmichaud | std: my $ does Inflate | 19:08 | |
p6eval | std 28379: OUTPUT«ok 00:02 96m» | ||
diakopter apparently needs to discover anonymous variables somewhere in the specificulations | |||
TimToady | taquitos and guac and sour cream and Mega Death Sauce, yum | 19:09 | |
crythias | perl6: my $TimToady="taquitos and guac and sour cream and Mega Death Sauce, yum"; say $TimToady; | ||
p6eval | elf 28387, pugs, rakudo 0eaf62: OUTPUT«taquitos and guac and sour cream and Mega Death Sauce, yum» | ||
crythias | hey. this is neat. it's almost like LOGO. | 19:10 | |
diakopter | std: my & && my $ && my % | 19:11 | |
p6eval | std 28379: OUTPUT«ok 00:06 124m» | ||
TimToady | diakopter: S02:1881 | 19:12 | |
diakopter | std: my &&&&3 | 19:13 | |
p6eval | std 28379: OUTPUT«ok 00:02 125m» | ||
19:13
cmv joined
|
|||
TimToady | Dear Historian: we apologize for using line numbers, but it's easier for us, and you can always look up the current SVN copy. | 19:13 | |
PerlJam | someone should turn std into something that can deparse. | ||
TimToady | hmm, viv can do that already | 19:14 | |
diakopter | theoretically the irclog cgi could derive the updated line numbers with some creative subversioning | ||
TimToady | but it won't add extra parens for you | ||
PerlJam | adding spaces would help even :) | 19:15 | |
TimToady | viv tries very hard to preserve whitespace exactly as it was currently | 19:16 | |
(as a round-tripping test) | 19:17 | ||
PerlJam | I guess parens would be needed to aid in figuring out what expressions like (* + * ** * - * * *).(2) really mean | 19:18 | |
diakopter | --desugar_level=3325 | ||
TimToady | funny how the Mega Death at 550k scovilles doesn't seem any hotter than Sudden Death at 105k--maybe I'm saturating the guages | 19:19 | |
pmichaud | ...does the "Mega" take longer than the "Sudden", I wonder? | 19:29 | |
pugs_svn | r28388 | diakopter++ | [vijs] implement Tight_and | ||
diakopter | vijs: say 1 && 3 | ||
p6eval | vijs 28379: OUTPUT«3» | ||
diakopter | vijs: say (say 0) && (say 2) | 19:30 | |
p6eval | vijs 28379: OUTPUT«021» | ||
PerlJam | vijs is 6 on javascript? | 19:31 | |
diakopter | STD-ridden JS, even plusser | ||
PerlJam | cool | 19:32 | |
diakopter | 6ON, the Perl 6 you apply directly to your 6. | ||
PerlJam | heh | 19:33 | |
diakopter: do you have an accompanying commercial with people slapping "Perl 6" stickers on every 6 they see? | |||
diakopter | no, but that would rocketh | 19:34 | |
TimToady | just put camelia stickers everywhere | ||
pmichaud | one could do something along the "All your base..." video :) | ||
19:35
donaldh left,
donaldh joined
19:36
donaldh left
|
|||
diakopter | PerlJam: tho there's Perlito, too, Perl 6 subset that actually emits JS, bootstrapping nearly | 19:37 | |
19:37
donaldh joined
|
|||
diakopter | from flavio_glock | 19:37 | |
derivative/successor to mp6 | |||
diakopter looks online for Camelia stickers | 19:40 | ||
pmurias | diakopter: perlito is an mp6 backend | 19:41 | |
sjohnson | it might help battle the ignorance of people thinking that Perl is a programming language that died 15 years ago | 19:42 | |
i hate talking to such people | |||
i think Matt-W knows a few | |||
PerlJam | sjohnson: I tend to just laugh at those people | 19:45 | |
sjohnson | they must really bet out of touch to think that, since most programs that support scripts use Perl or Python | 19:47 | |
pugs_svn | r28389 | diakopter++ | [vijs] implement Tight_or (and alias Loose_and to Tight_and) | 19:48 | |
PerlJam | sjohnson: just myopic. The web is the biggest new platform in the last 15 years. If you're not dominating the most recent platform, you're dying or dead. | 19:53 | |
Matt-W | yes I do know some people like that | 19:55 | |
Most of them work with me :( | |||
diakopter | "ooo Perl; it's so dead it's *ghostly*" | 19:56 | |
19:58
ruoso left
|
|||
TimToady | phone | 20:00 | |
☎ | |||
sjohnson | unicode has everything! | 20:02 | |
Matt-W | It's a little phone! | ||
So cute | |||
sjohnson | ✈ | ||
20:03
ruoso joined
|
|||
Patterner | It's a little starship! | 20:04 | |
Not so cute | |||
sjohnson | its.. a plane1 | 20:06 | |
there should be a monthly challenge to find the cutest unicode character | |||
pugs_svn | r28390 | diakopter++ | [vijs] implement Loose_or (as alias to Tight_or); yes, it treats all infix operators at those precedences as ||; the others will be implmented as well. | ||
20:08
pmurias left
|
|||
sjohnson | typo in 'implemented' | 20:09 | |
Patterner | is there a piglet unicode character? | ||
diakopter | *implemented # sjohnson++ | ||
TimToady | actually, ✈ is plane 0 | 20:11 | |
sjohnson | haha | ||
excalamation mark fail on me | |||
im sure you knew that tho | |||
timtoady wit++ | |||
TimToady | @karma wit | 20:12 | |
lambdabot | wit has a karma of 1 | ||
crythias | My sister is a binary pest. I told her to stop Boolean me. | ||
sjohnson | crythias: members.shaw.ca/smujohnson/snd/garlaff.mp3 | 20:13 | |
20:14
am0c joined
|
|||
ingy | buu: hi | 20:17 | |
20:23
chturne left
20:24
NorwayGeek is now known as NorwayGeek|Away
|
|||
jrtayloriv | crythias, Tell her she octal leave you alone. | 20:33 | |
diakopter | or else you'll put a hexa her | ||
bah-dum-ching. | 20:36 | ||
crythias | ha ha ha | ||
20:37
quietfanatic joined
|
|||
crythias | There is no spoon. Unless you declare it first. | 20:37 | |
diakopter | Name it && claim it, I always say. | 20:39 | |
quietfanatic | rakudo: class Y {has $.z}; subset X of Y where {.z == 0}; my $q = 4; say $q ~~ X; | ||
p6eval | rakudo 0eaf62: OUTPUT«Method 'z' not found for invocant of class 'Int'» | ||
quietfanatic | It checks the where {} before checking that it's a Y. | 20:40 | |
Bug? | |||
moritz_ | IMHO yes | 20:41 | |
please submit | 20:42 | ||
TimToady | should probably catch exceptions in a where | ||
quietfanatic | How duz I submitted bug? | 20:43 | |
moritz_ | but in this case the where-block shouldn't even be run, no? | ||
quietfanatic: mailto:rakudobug@perl.org | |||
TimToady | moritz_: ja, you'd think. | 20:45 | |
but maybe they're thinking of things like 2 ~~ subset * of Num where 1..4 | 20:47 | ||
20:47
molaf left
|
|||
quietfanatic | Any special things I should put in the message? | 20:47 | |
TimToady | usually just a paste of appropriate lines of IRC will do | 20:48 | |
quietfanatic | TimToady: Surely that'd be easier written as 2 ~~ Num & {1..4} | ||
or Num & 1..4 | |||
pmichaud | since it's effectively implemented using junctions, it's not short-circuiting on the junction yet | 20:49 | |
20:49
explorer joined
|
|||
pmichaud | i.e., it's testing both Y and where, but carping about the where | 20:49 | |
moritz_ | pmichaud: IMHO it should use the "also" junction, which is an all() but with a defined order | 20:50 | |
pmichaud | moritz_: agreed, "also" is nyi | ||
moritz_ | and short-circuits | ||
I know | |||
pmichaud | I'm just 'splaining | ||
TimToady | in any case, a where that throws an exception should probably be treated as false, if try isn't too big an overhead | 20:51 | |
moritz_ | ok :-) | ||
pmichaud | I don't think try will be too big an overhead | ||
we can certainly try it and see :) | |||
TimToady | though the ~~ Y test should generally be faster anyway | ||
which argues for putting it first in any case | |||
though it could be argued on logical grounds that where { @pigs.fly } should make implication true | 20:53 | ||
20:55
ruoso left
20:56
BooK left,
BooK joined
20:58
crythias left
21:02
hercynium joined
21:29
cmv left
21:32
nihiliad left,
nihiliad joined
21:38
crythias joined
21:41
KyleHa left
21:42
tak11 joined
22:10
lmc left
22:19
[particle] left
22:37
SmokeMachine left
22:38
c1sung left
22:39
meppl left
22:59
iblechbot left
23:05
am0c left
23:06
am0c joined
23:21
rhr_ joined
23:31
astinus_ joined
23:35
rhr left
23:37
buubot left
23:38
buubot joined,
buubot left
23:39
buubot joined
23:47
badanov joined
|
|||
badanov | Hi | 23:47 | |
* taptaptap* Is this thing on? | |||
Juerd | It is! | 23:51 | |
23:54
guest1235123 joined
|
|||
badanov | Okay then | 23:55 | |
dunno if I can help, but I guess we will see then | |||
I can straight from the perl6 website | |||
guest1235123 | badanov: using the web interface? | 23:59 | |
badanov | yes | ||
guest1235123 | badanov: you can certainly help :) |