»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
sorear what? 00:08
Util: curses. I thought that was an impossible error. 00:09
dalek nda: 214b05b | dukeleto++ | README.md:
Add a panda icon to our readme
Util sorear: I guess I just bring out the worst in compilers. 00:10
00:11 bluescreen10 left 00:13 bbkr1 joined, Holy_Cow joined, bbkr1 left 00:14 lichtkind_ joined 00:15 lichtkind left, lichtkind_ is now known as lichtkind 00:21 lichtkind left 00:23 woosley joined 00:27 lichtkind joined 00:28 woosley left 00:31 [particle] left 00:42 [particle] joined 00:43 Holy_Cow left, Holy_Cow joined 00:49 fhelmberger left 01:00 whiteknight left, noganex_ joined 01:04 noganex left 01:10 tokuhirom left 01:11 lichtkind left 01:40 [particle]1 joined 01:42 [particle] left 01:47 Holy_Cow left 01:59 beek_ is now known as beekor 02:14 cooper left 02:16 cooper joined
Util perl6: my @a = ^2; say @a X @a; 02:49
p6eval rakudo b4486e, niecza v7-30-gaf607ad: OUTPUT«00011011␤»
..pugs: OUTPUT«01␤»
Util perl6: say ^2 X ^2;
p6eval rakudo b4486e: OUTPUT«00011011␤»
..pugs: OUTPUT«01␤»
..niecza v7-30-gaf607ad: OUTPUT«WRONG ExitRunloop TAKEN:␤ at line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1165 (CORE infix:<X> @ 2) ␤ at /tmp/WXzgkgBY6u line 1 (MAIN mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1890 (CORE C885_ANON @ 2) ␤ a…
Util Odd that Niecza would fail there.
03:09 f00li5h left 03:15 cooper left 03:23 Su-Shee_ joined 03:26 xinming left, am0c left 03:27 Su-Shee left 03:31 jaldhar joined 03:39 Holy_Cow joined 03:43 am0c joined 03:44 Holy_Cow left 03:48 molaf joined
sorear yes, odd. 03:50
04:01 woosley joined 04:08 satyavvd joined 04:15 karb joined, shinobicl joined 04:19 karb left
sorear ...weird. 1 X gather... is fine, but 1 X ^2 fails 04:21
04:23 cooper joined 04:25 [particle]1 left 04:26 drbean left 04:31 satyavvd left, molaf left 04:34 kaare__ joined 04:35 f00li5h joined
dalek p: abdf378 | pmichaud++ | src/ (2 files):
Refactor building of match object.
04:37
p: 985fd7d | pmichaud++ | src/QRegex/Cursor.nqp:
Cache a match object once we've built it.
04:39 thou joined 04:44 shinobicl left
dalek kudo/nom: 5aecd55 | pmichaud++ | / (10 files):
Merge branch 'nom' of github.com:rakudo/rakudo into nom
04:45
kudo/nom: d5a8c7e | pmichaud++ | / (4 files):
Update Match, Cursor, and Capture objects. Indexed access to
sorear pmichaud: every time I see "Merge branch 'nom' of ... into ..." I get falsely excited :/ 04:47
04:48 drbean joined 04:52 sivoais joined 05:02 satyavvd joined 05:03 mberends left 05:11 donri joined 05:13 Enzo_ joined 05:17 birdwindupbird joined 05:22 Enzo_ left 05:46 wtw joined 06:01 [particle] joined
dalek ecza: 212ba5b | sorear++ | / (2 files):
Fix ^2 X ^2 (Util)
06:03
06:04 jaldhar left, jaldhar joined 06:05 beekor left 06:06 aindilis left, jaldhar left, beekor joined 06:07 jaldhar joined 06:11 odoacre joined
moritz sorear: the siwtchover from nom to master probably won't be a merge commit 06:11
06:23 soh_cah_toa left 06:30 daniel-s joined, Su-Shee_ is now known as Su-Shee 06:31 thou left 06:32 cooper left 06:35 noganex_ is now known as noganex
TimToady rosettacode.org/wiki/Undefined_values#Perl_6 06:42
pmichaud blog post! pmthium.com/2011/07/14/new-regex-en...spectests/ 06:46
sleep time! bbiaw 06:47
TimToady o/ 06:48
TimToady always wonders what G Cables are, though... :) 06:51
06:55 wamba joined 07:04 mberends joined 07:10 mj41 joined, Jackneill joined, Jackneill left, Jackneill joined 07:23 fhelmberger joined 07:24 fhelmberger left 07:25 fhelmberger joined 07:27 Trashlord left 07:37 im2ee joined 07:40 Mowah joined 07:52 cipherte1t left 07:53 Trashlord joined 07:56 wamba left 07:57 ciphertext joined
dalek ecza: 355a78a | sorear++ | lib/ (2 files):
Simplify RUN_ONCE handling a bit, fixes $_ assignment at top level
08:00
sorear otu
tadzik good morning 08:27
is nom now on qregex, completely?
TimToady no, only the regexes in nom, not the grammars, according to the blog 08:29
moritz nom: say 'abc' ~~ /abc/ 08:32
p6eval nom: OUTPUT«abc␤»
tadzik cool
moritz nom: say 'abc' ~~ /(a)b(c)/
p6eval nom: OUTPUT«abc␤»
moritz nom: say ('abc' ~~ /(a)b(c)/)[0]
p6eval nom: OUTPUT«a␤»
moritz nom: say ('abc' ~~ /(a)b(c)/)[0].WHAT; say $1
p6eval nom: OUTPUT«Match()␤Could not find sub !postcircumfix:<[ ]>␤current instr.: '_block1002' pc 158 ((file unknown):157) (/tmp/8M0fEPtcDS:1)␤»
moritz nom: say ('abc' ~~ /(a)b(c)/)[0].WHAT
p6eval nom: OUTPUT«Match()␤»
tadzik nom: say ('abc' ~~ /(a)b(c)/).list[0].WHAT; say $1 08:33
p6eval nom: OUTPUT«Match()␤Could not find sub !postcircumfix:<[ ]>␤current instr.: '_block1002' pc 170 ((file unknown):29621359) (/tmp/ifpD8IAbEv:1)␤»
moritz it's the $1 the causes problems
not the .WHAT
jlaire nom: 'a' ~~ /(a)/; say $/
p6eval nom: OUTPUT«a␤»
jlaire nom: 'abc' ~~ /(a)b(c)/; say $/.perl 08:34
p6eval nom: OUTPUT«abc␤»
08:34 betterworld left
jlaire nom: 'abc' ~~ /(a)b(c)/; say $/.WHAT 08:35
p6eval nom: OUTPUT«Match()␤»
moritz I might be able to fix $1 etc. 08:37
nom: say 'abc' ~~ /<alpha>/; say $<alpha> 08:38
p6eval nom: OUTPUT«a␤a␤»
moritz nom: say 'abc' ~~ /<alpha>../; say $<alpha> 08:39
p6eval nom: OUTPUT«abc␤a␤»
08:42 dakkar joined 08:43 betterworld joined
TimToady rosettacode.org/wiki/Pythagorean_triples#Perl_6 <-- added fast algorithm with several nifty p6 idioms 08:52
moritz rakudo: say +{a => 1, b => 2} 08:53
p6eval rakudo b4486e: OUTPUT«2␤»
moritz no need for the .keys in +%trips.keys
that's p5 think :-) 08:54
08:55 am0c left
TimToady eep, 2am, almost 08:56
RC is addictive...
moritz oh, that's the old solution
TimToady don't remember who added the slow one...
moritz I'll change it
TimToady thanks 08:57
dalek kudo/nom: 88f4119 | moritz++ | src/Perl6/Actions.pm:
fix $0, $1 etc.
TimToady .zZ(...) 08:59
09:00 birdwindupbird left
jnthn morning o/ 09:00
moritz \o
felher TimToady++ for Rosetta-Codes 09:02
pmichaud++ for blogpost (and hacking of course)
moritz indeed, pmichaud++ TimToady++ jnthn++ 09:04
jnthn reads the pmichaud++ blog post while having is mornin' coffee 09:05
Gotta do a little $dayjob and pack for vacation, but hope to sneak another hour or so in on enums too :)
tadzik why doesn't that work on Rakudo? 09:06
it works 09:07
09:07 drbean left
moritz then comment on it :-) 09:07
09:07 Chillance joined, am0c joined
tadzik I'm trying to understand this RC markup 09:08
09:09 birdwindupbird joined
moritz good news, enabling regexes in nom wins us back quite a few test files 09:10
a few directly related to regexes
and others that use regexes to verify some data
jnthn nice
09:10 birdwindupbird left
moritz currently +6 test files, and counting 09:11
09:12 Jackneill left
moritz most of them aren't huge, but it still looks like a win 09:14
09:14 birdwindupbird joined
jnthn Guess the regex engine needs more features before we can get S05-regex/maß.t back 09:15
moritz mass with sharp s? :-) 09:16
jnthn is just thinking of beer as usual :)
moritz :: not yet implemented at line 37, near " not | ify" 09:17
is the error it produces right now
wait, that wasn't implement in master eitehr 09:18
moritz should run the fudged version
jnthn :)
jnthn hopes that one gets a bit further
moritz aliasing to key
Null PMC access in invoke()
current instr.: 'nqp;Perl6;RegexActions;codeblock' pc 82792 (src/gen/perl6-actions.pir:0) (src/Perl6/Actions.pm:3597)
called from Sub 'nqp;Regex;Cursor;!reduce' pc 2703 (src/Regex/Cursor.pir:1023)
called from Sub 'nqp;Regex;Cursor;!cursor_pass' pc 2116 (src/Regex/Cursor.pir:660)
the "aliasing to key" looks like debugging output left over 09:19
jnthn yeah, compile time
09:25 im2ee left 09:26 im2ee joined
dalek kudo/nom: 45c0697 | moritz++ | t/spectest.data:
6 more passing test files
09:27
09:35 wamba joined 09:41 wamba left
tadzik rakudo: say (1000/1).WHAT 09:59
p6eval rakudo b4486e: OUTPUT«Rat()␤»
tadzik rakudo say (1000/1) div 5
rakudo: say (1000/1) div 5
p6eval rakudo b4486e: OUTPUT«No applicable candidates found to dispatch to for 'infix:<div>'. Available candidates are:␤:(Int $a, Int $b)␤␤ in main program body at line 22:/tmp/V2HsXfFJXD␤»
tadzik nom: (10, 100, 1000 ... *)[3].WHAT.say 10:00
p6eval nom: OUTPUT«Rat()␤»
tadzik a-ha
moritz yep, known bug
tadzik okay
moritz fixing it should be quite possible - it's all Perl 6 code 10:01
(note that master special-cases that; I fear you need to do that)
tadzik oh, looks like I volunteered to fix it :) 10:02
jnthn tadzik++ ;)
tadzik damn :)
I mean, yay! 10:03
where is it implemented?
moritz operators.pm sub SERIES iirc
10:08 Kivutarrr joined 10:09 woosley left 10:10 MayDaniel joined 10:14 mberends left, Jackneill joined 10:16 mberends joined
moritz rakudo: my $a = 5; say "yes" if 3 <= $a <= 10; 10:20
p6eval rakudo b4486e: OUTPUT«yes␤»
moritz perl6: my $a = 5; say "yes" if 3 <= $a <= 10; 10:21
p6eval pugs, rakudo b4486e, niecza v7-32-g355a78a: OUTPUT«yes␤»
moritz seems like all major compilers get chained operators right
jlaire nom: my $a = 5; say "yes" if 3 <= $a <= 10; 10:23
p6eval nom: OUTPUT«yes␤»
10:24 JimmyZ joined, drbean joined 10:25 am0c left
JimmyZ rakudo: class pmichaud { }; say \pmichaud; my $a = \pmichaud++; say $a; 10:27
p6eval rakudo b4486e: OUTPUT«Capture()<0x67b3980>␤Capture()<0x66daa10>␤»
JimmyZ rakudo: class Foo { }; say \Foo ; say \Foo; 10:29
p6eval rakudo b4486e: OUTPUT«Capture()<0x58f2ea0>␤Capture()<0x5bdf980>␤»
10:29 wamba joined
jnthn \ forms capture :) 10:29
10:30 odoacre left
moritz JimmyZ has captured pmichaud and pmichaud++ :-) 10:30
moritz has the feeling that at least half of the tests involving + variable or literal are bogus 10:31
JimmyZ rakudo: sub postfix:<++>($a) { }; sub pmichaud { }; pmichaud++; # ++ with no errors :) 10:32
p6eval rakudo b4486e: ( no output )
JimmyZ rakudo: sub postfix:<++>($a) { }; class pmichaud { }; class jnthn { }; loop { pmichaud++; jnthn++ } # another one 10:36
p6eval rakudo b4486e: OUTPUT«(timeout)» 10:37
JimmyZ so, can class++ ?
10:37 am0c joined, MayDaniel left
moritz if you define a postifix:<++> that can, why not? 10:38
JimmyZ well, I thought postfix only is used by $var or sub is rw 10:39
jnthn It's just an operator.
It does whatever you tell it to :)
The thing that demands something rw is inside of the default postfix:<++> implementations. 10:40
JimmyZ rakudo: grammer foo {}; foo++;
p6eval rakudo b4486e: OUTPUT«Could not find sub &foo␤ in main program body at line 22:/tmp/7QoZnZ8qAc␤»
JimmyZ grammer can't ++
jlaire s/grammer/grammar/ # :)
jnthn JimmyZ: No, you spelt grammar wrong :) 10:41
Common mistake. :)
JimmyZ oh
jnthn (english spelling)-- :)
nom: grammar foo {}; foo++; 10:42
p6eval nom: OUTPUT«Cannot assign to a non-container␤current instr.: 'postfix:<++>' pc 417673 (src/gen/CORE.setting.pir:100247) (src/gen/CORE.setting:671)␤»
10:46 kaare__ left, JimmyZ left 10:47 im2ee left 10:48 im2ee joined 11:01 Jackneill left
dalek kudo/nom: 064bcc4 | jonathan++ | src/Perl6/ (2 files):
Flesh out actions a bit for enumerations. Very much a first cut - only handles a few simple cases.
11:01
kudo/nom: fed99c4 | jonathan++ | src/Perl6/Metamodel/BaseType.pm:
Need .^parents in BaseType role.
kudo/nom: 74c67f8 | jonathan++ | src/core/Enumeration.pm:
Sketch out a few bits in the Enumeration role.
kudo/nom: 9c760e1 | jonathan++ | src/Perl6/Metamodel/EnumHOW.pm:
Create enumeration values at enum compose times, and include the key.
11:04 daxim joined 11:05 Holy_Cow joined
mberends tadzik: when earlier I could not reproduce your Zavolaj test failures, I must have been running and older Rakudo or Parrot, because I now do get the same failures. No idea what to do about them, and I don't want to ask other devs to steal tuits from nom. 11:06
I guess I'll turn the tests into todo's, that way the failures will be expected 11:08
tadzik okay, I fixed that :) 11:15
dalek kudo/nom: ef31cef | tadzik++ | src/core/operators.pm:
Make n/1 Rats be Ints in sequence generation
11:17
tadzik nom: my $a = 5; my $b = 5/1; say $a.?denominator; say $b.?denominator
p6eval nom: OUTPUT«Nil␤1␤»
tadzik hmm
should I go for that approach in the patch?
maybe not, someone can create a class that is not a Rat but has a .denominator 11:18
11:18 wamba left 11:19 wamba joined
jnthn mberends: Zavolaj will also need a good looking at for nom. 11:21
mberends: I suspect it may make some master-y assumptions. It is quite a gutsy module.
11:22 im2ee left 11:27 im2ee joined 11:28 slavik1 left
moritz nqp: say(nqp::substr("abc", -1)) 11:31
p6eval nqp: OUTPUT«c␤»
moritz nqp: say(nqp::substr("abc", 0, -1)) 11:36
p6eval nqp: OUTPUT«␤»
moritz nqp: say(pir::chop__Ssi("abc", 1))
p6eval nqp: OUTPUT«error:imcc:syntax error, unexpected SREG, expecting '(' ('$S100')␤ in file '(file unknown)' line 33␤error:imcc:syntax error ... somewhere␤ in file '(file unknown)' line 103␤syntax error ... somewhere␤»
moritz nqp: say(pir::chopn__Ssi("abc", 1))
p6eval nqp: OUTPUT«ab␤»
11:41 Holy_Cow left 11:50 tokuhir__ joined 11:51 satyavvd left 12:08 Gambit joined 12:10 Gambit left 12:14 pnu left 12:15 JimmyZ_ joined 12:16 pnu joined
JimmyZ_ good evening, #perl6 12:16
takadonet JimmyZ_: yo
JimmyZ_ takadonet: aloha
12:18 im2ee left 12:19 bluescreen10 joined
[Coke] Wanshang hao, JimmyZ_. 12:19
JimmyZ_ Coke 12:20
12:21 Jackneill joined
[Coke] xiexiene 12:21
moritz perl6: say :16<DEAD_BEEF>; 12:26
p6eval niecza v7-32-g355a78a: OUTPUT«===SORRY!===␤␤Action method alnumint not yet implemented at /tmp/QInlPTRzD3 line 1:␤------> say :16<DEAD_BEEF⏏>;␤␤Action method rad_number not yet implemented at /tmp/QInlPTRzD3 line 1:␤------> say :16<DEAD_BEEF>[3…
..pugs, rakudo b4486e: OUTPUT«3735928559␤»
[Coke] aluminum integers. 12:27
dalek kudo/nom-num: f7e4cec | moritz++ | src/Perl6/Actions.pm:
(re-)introduce radcalc, but smarter than before
kudo/nom-num: 64fe676 | moritz++ | src/Perl6/Actions.pm:
allow arbirary number of trailing zeros. Wins back the few tests that the previous commit regressed
kudo/nom-num: 8097419 | moritz++ | src/Perl6/Actions.pm:
hopefully speed up stripping of trailing zeros
kudo/nom-num: 09a43b7 | moritz++ | src/Perl6/Actions.pm:
remove (mostly PIR) functions that are now mostly unused
kudo/nom-num: e939a8b | moritz++ | src/Perl6/Actions.pm:
get :16<DEAD_BEEF> style literals working
moritz rakudo: say :16('a0') 12:29
p6eval rakudo b4486e: OUTPUT«160␤»
moritz perl6: say :16('a0')
p6eval niecza v7-32-g355a78a: OUTPUT«===SORRY!===␤␤Action method rad_number not yet implemented at /tmp/a8jEZIQryt line 1 (EOF):␤------> say :16('a0')⏏<EOL>␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 570 (CORE di…
..pugs, rakudo b4486e: OUTPUT«160␤»
[Coke] moritz++ 12:35
jnthn nom-num :)
moritz gets better at branch naming :-) 12:37
[Coke] oh, those aren't in nom proper!?
[Coke] sighs.
jnthn: aren't you off being a redneck this week?
jnthn ...a redneck? :) 12:38
[Coke]: Only if I get sunburnt while hiking :)
[Coke] er, off in the woods, away from technology...
jnthn ah :)
Yeah
Going to the alps.
[Coke] when do you leave?
jnthn Just packing stuff at the moment
Should probably leave in about 2.5 hours 12:39
(Taking sleeper train from CPH, but gotta get over there first...and I don't trust the local trains to be on time when it matters...) 12:40
moritz where is our action method for circumfix:<( )> defined? 12:45
12:45 smash joined
smash hello everyone 12:45
moritz I see one in NQP::Actions, but I don't know if rakudo actually picks it up
\o smash 12:46
never mind, found it 12:48
jnthn I thought Rakudo had one... 12:49
ah, good
jnthn was sure he saw it yesterday :)
moritz jnthn: when we parse thing like :16('123'), there probably isn't a good way to see if the contents of that circumfix is a single constant known at compile time, is there? 12:50
12:50 _twitch joined
jnthn moritz: On any past node you can try $node<has_compile_time_value> 12:51
moritz tries
jnthn If that is true, you may safely use $node<compile_time_value>
Which will be the actual object, not a PAST node.
The enum action method uses it, amongst other places. 12:52
constant also, iirc
12:58 xinming joined
moritz doesn't seem to work the way I tried, I guess there are more levels of indirection involved 13:00
jnthn Mebbe
May be wrapped up in a PAST::Stmts for example 13:01
I foudn that yesterday with enum.
13:02 Holy_Cow joined
moritz I'd love to see a mechanism that automatically strips unnecessary wrappings, and/or propagates information known at compile time up in the tree (towards the root) 13:03
[Coke] ISTR someone was working on such a past filter for parrot. 13:05
moritz I tried that back in the days when tcurtis was still working on his tree-optimizations lib
pmichaud good morning, #perl6 13:09
moritz good morning, pmichaud
13:12 pochi left
jnthn morning, pmichaud 13:12
13:12 pochi joined
moritz in the nom-num branch, I have some cases where I construct Int and Num literals inside radcalc() 13:15
should I apply the same PAST::Want magic there as method numish() does? 13:16
pmichaud if it's not painful, yes.
moritz it would be less painful if I refactored it into and add_numeric_constant
s/and/an/ 13:17
13:31 drbean left, [Coke] left 13:33 [Coke] joined 13:38 [Coke] left 13:40 [Coke] joined 13:41 molaf joined 13:43 Holy_Cow left 13:44 pedram joined 13:45 pedram left
dalek kudo/nom-num: 01df600 | moritz++ | src/Perl6/ (2 files):
refactor numeric constants to do the PAST::Want magic in a single place
13:50
moritz pmichaud: at your convience I'd like to hear your opinion on the nom-num branch
*convenience
moritz can't type
pmichaud: it mostly tries to unify compile time number handling, eliminates PIR code, and adds back :16<DEAD_BEEF> style literals 13:51
13:52 [Coke] left 13:53 mtk joined, [Coke] joined 13:55 Chillance left
pmichaud moritz: definitely planning to review it here in a bit 13:57
for the tests in S05-mass/rx.t, are we making any attempt to autogen that file (or otherwise synchronize it) with the rx tests in nqp, or are they basically separate? 14:08
(I'm fine with any answer.. just want to know if it's okay for me to be editing rx.t directly :) 14:09
jnthn OK, time for me to be leaving.
Happy hacking! I look forward to seeing how awesome nom is by the time I get back. :) 14:10
moritz jnthn: have fun!
pmichaud jnthn: happy travels!
moritz pmichaud: it was originally autogenerated, and then edited by hand
pmichaud: so it's fine to edit it directly 14:11
pmichaud moritz: perfect, thanks.
jnthn Thanks! Bye o/
moritz ~o~ 14:12
14:12 Chillance joined
JimmyZ_ jnthn: bye 14:12
14:18 woosley joined
pmichaud is it okay for me to split rx.t into smaller files? 14:20
moritz yes 14:21
you're also welcome to move the chunks to the correct sections 14:22
pmichaud should I leave rx.t as-is and just create the new files, or should I remove things from rx.t also?
moritz the latter
pmichaud okay, will do
thanks
moritz I don't want duplicate tests sprinkled around roast
pmichaud first, a short break, then nom-num code review
PerlJam moritz: since my ADD made me look at your code, when would you have .add_constant with differing $type and $primitive? 14:24
(technically that's not your code, but you used it so I figured the odds are good that you'd know the answer) 14:25
moritz PerlJam: it allows you to create other wrapper types for same storage type 14:26
PerlJam: for example you might want to serialize List, Array and Parcel both with ResizablePMCArray as storage 14:27
PerlJam: or Int and Bool both as int
PerlJam moritz: thanks, I just needed a good example.
pmichaud hrm
this is going to be expensive, at least initially :-(
moritz a more advanced serializer would figure that out by looking at the class
PerlJam moritz: yeah, I was contemplating something "more advanced" and that's what led me to ask. 14:28
moritz PerlJam: actually there's one example that uses different primitives/types already
PerlJam: Rat and Complex both use type_new and primitive
s/and/as/ 14:29
pmichaud moritz: be aware that (iiuc) nqp doesn't do anything special with "my int $i". I.e., it's still a Parrot PMC. 14:32
moritz ouch
pmichaud jnthn has plans to fix this... (as it works in nom), but I don't think it's been done for nqp yet. 14:33
moritz it explains why I had to (partially) use nqp::mul_n instead of *
ingy greetings 14:34
pmichaud even assuming it does work, won't radcalc quickly go out of the range of integers for nums and stuff like that?
PerlJam hello ingy 14:35
moritz pmichaud: not quicker than the current solution, if we can trust roast
pmichaud current solution being... ?
moritz the code in nom 14:36
pmichaud yes, it's wrong also.
I did say that the existing solutions all have something wrong with them.
moritz I know
pmichaud better might be to follow something closer to what master does
moritz what I tried to do was to put it all into one place, so that it's easier to fix eventually
pmichaud okay, the question I have at this point becomes -- how does Str.Numeric ultimately access this code? 14:37
moritz how smart is Str.Numeric supposed to be? 14:38
pmichaud almost as smart as the compiler, iiuc.
it certainly has to be able to handle radix conversions.
moritz then it needs to call back into the compiler
pmichaud call back into the compiler is probably too inefficient.
string-to-number conversion is too common an operation for that.
moritz and reimplementing parsing of all possible number formats is insane 14:39
pmichaud I don't think we have to do it for all number forms
moritz so, optimize for the common case, and detect when to call back into the compiler?
pmichaud yes
moritz for example radcalc is capable for handling things of the form '0xAB'
pmichaud but it should be the same code for both runtime and compile time conversions 14:40
moritz that would involve reparsing
pmichaud well, except that radcalc seems to return PAST trees
moritz which we also avoid
pmichaud ...reparsing?
why so?
moritz currently the grammar handles cases like :16<DEADBEEF>
oh, never mind 14:41
I had a logic error
the only thing where we can't take the same code path is when deciding whether to call back into the compiler or not 14:42
beccause the compiler will never do that
14:42 envi left
pmichaud that's a good point 14:42
moritz re returns PAST: that's easy-ish to fix
what I'm a bit worried about
is '3+4i'.Numeric
pmichaud is that supposed to become a complex number? 14:43
moritz I fear so
note sure, we should ask TimToady++ 14:44
pmichaud it is.
moritz but since we don't have a rule to parse it as a literal in the grammar, we need diverting code paths 14:45
pmichaud S02:3325
not necessarily. the string-to-number converter can have an option for converting complexes that the grammar never calls.
moritz so, different code paths 14:46
pmichaud how many different forms of numbers do we have?
let's make a list.
moritz plain integers: 1234
rationals: 123.56
nums: 123.45e6 14:47
radixed numbers: :16<DEAD.BEEF> # I think also allows exponents somehow
complex/imag: 3+4i, or just 4i 14:48
autobase: 0xBEEF
14:48 kaare__ joined
moritz other nums: Inf, NaN, +-Inf 14:49
maybe complex inf? Inf\i
I think :16($thing) doesn't count, because it's not a real literal 14:50
pmichaud correct, that's runtime.
so, is that about it?
moritz unless I forgot something 14:51
pmichaud that's all I see.
moritz (was from memory here :-)
pmichaud It doesn't seem like it would be too hard to write a string-to-number conversion that could handle all of the above cases.
moritz well, to me it seems we need two functions: 14:52
1) a string-tokens-to-number convert, used both in Str.Numeric and at compile time
2) a parser for strings that is only used in Str.Numeric 14:53
pmichaud I don't understand why we need #2.
wait, rephrase.
I don't understand why #2 can't be just part of #1.
and by "parser" I'm specifically thinking "not regexes" 14:54
moritz a parsers is not the same as a converter. By separating the two, we probably get cleaner code, and it will be easier to see which parts are reused by both compile time and run time
s/parsers/parser/ 14:55
pmichaud let's assume I have a string-to-number converter that can handle all of the cases we identified. Why can't the compiler use that?
moritz it can, but then we get reparsing 14:56
pmichaud if the "reparsing" in the string-to-number converter is fast, why is that a problem?
and it's at compile time... so why is that an issue?
moritz maintenance 14:57
pmichaud technically radcalc is even now doing "reparsing"
moritz what if you change the number formats in one of the parsers?
pmichaud we update the string to number converter... but we'd have to do that anyway. 14:58
moritz pmichaud: it does probably too much
perl6: say +' 5'
p6eval pugs, rakudo b4486e, niecza v7-32-g355a78a: OUTPUT«5␤»
moritz pmichaud: so, do you want me to merge nom-num for now, as an incremental improvement, and continue working on the more general parser? 15:03
pmichaud +1
moritz (though I'm not sure I have enough experience with non-regex based parsers to come up with a good one)
what I at least can do is to collect test cases 15:04
perl6: say +'1.4e5x'
p6eval pugs, rakudo b4486e: OUTPUT«140000␤»
..niecza v7-32-g355a78a: OUTPUT«Unhandled exception: System.FormatException: Unknown char: x␤ at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 ␤ at System.Double.Parse (System.String s, IFormatProvider provider) [0x…
pmichaud for numbers, a dfa-based solution tends to work well
number parsing rarely involves backtracking
moritz so, write a big regex, and hand-translate to a DFA? 15:05
pmichaud we have a big regex already
it's in the grammar :)
moritz that's not complete (see the 3+4i case)
pmichaud so, add that case
(mentally, not actually into std.pm) 15:06
moritz is a bit scared :-)
pmichaud maybe I can prototype the parsing bit in nqp
that will at least let us both see what I'm aiming at, and then maybe you can work on integrating it into rakudo 15:07
sorear good * #perl6 15:09
pmichaud: did studying niecza help at all with qregex?
pmichaud sorear: it helped a ton. thanks.
the ltm stuff was a lot easier to follow in niecza than in Cursor.pmc 15:10
TimToady someday soon LTM dfa will hopefully be fast enough to do number parsing, and then we'll want extensible number literals
pmichaud TimToady: yes, I'm thinking that as well. the slowdown (for Rakudo at least) is in the captures. 15:11
TimToady might be an appropriate spot to throw in a tagged DFA instead, so that captures are just offsets into the string 15:12
not expecting that right away though
pmichaud right
I think a fully-grammar based solution is ultimately possible... just not likely in the near future.
(where "near future" means "2011") 15:13
sorear pmichaud: STD.pm6 has a rule 'strtonum' with a comment that suggests it's intended to be the definition of Str.Numeric
TimToady also, we might have an arrangement whereby, instead of actually using LTM for everything, we just notice that something looks funny about a normal number, and only invoke the grammar when we're not sure
yeah, we had some stuff in there, but it's likely bitrotted
pmichaud sorear++ # excellent catch, thanks!
moritz: I need to take a short walk, then I'll come back and see what I can put together for a parser 15:14
TimToady you'll note that strtonum is still not handling whitespace 15:15
sorear should it? 15:16
TimToady probably not
but there should be some other rule that does
pmichaud we allow leading whitespace in strings but not in the middle of the constant, yes?
moritz so should +' 5' be 0?
TimToady or the conversion routine does
moritz: certainly not 15:17
sorear another question....should Perl6 keep the "silently ignore trailing garbage" that Perl5 does?
pmichaud +' 5+4i' # complex
+' 5 + 4i' # int with warning about extra stuff
in a sixperl call long ago, I think we leaned away from "silently ignore trailing garbage"
moritz sorear: I'd say we should require a word boundary at least
sorear I'm inclined to call +' 5' an error, but I'm biased to strictness like that
TimToady thinking of the <5+4i> case, yes, I think we should be picky about wordiness
15:17 am0c left
TimToady but not about leading trailing 15:18
(whitespace)
moritz +'5isnotgood' # 0, 5 or 5i?
sorear or exception?
Failure
pmichaud at least a warning.
failure is fine with me.
TimToady hmm, .comb(/<strtonum>/) :) 15:19
that expresses the intent to ignore garbage
pmichaud afk for a bit
PerlJam +'5e3' and +'5e3blah' # ? 15:20
TimToady as long as the user can invoke strtonum directly, there's no reason to allow trailing garbage by default 15:21
other than ws
moritz so no Inf\i in strtonum
TimToady after all, trailing garbage may indicate a number conversion that they thought they were importing but didn't
moritz can live with that
sorear How should strtonum be exposed to the user? 15:22
flussence Str.parseInt? :) /me ducks
sorear Should +~(Inf\i) be made to work?
flussence: ITYM int.Parse :p 15:23
TimToady why shouldn't 'Inf\i' parse?
15:23 thou joined
moritz which subrule would match the \ ? 15:23
TimToady nobody has claimed that strtonum is correct yet :) 15:24
moritz oh wait, it's even in there
sorear let's work out a working strtonum *today*
TimToady if we can allow "prefix" +/- on the front, we can all "postfix" \i on the back
moritz is just too blind
TimToady *allow 15:25
why, so it is...fancy that... 15:27
moritz sorry for being rash 15:28
TimToady is never rash, except when he is 15:29
15:30 am0c joined, thou_ joined
moritz S02-builtin_data_types.t has isa_ok(+"0b0101", Rat) 15:30
that's wrong, should be an Int, right?
TimToady das ist richtig
moritz erm, s/b/d/ (but doesn't really matter here) 15:31
es ist richtig, dass es falsch ist? :-)
TimToady Hai, sou desu!
15:33 thou left
TimToady now if it were Real, that would be okay 15:33
maybe that's what they were thinking 15:34
except for the 'isa' part
I don't suppose we have a does_ok...
pmichaud back again 15:35
15:36 woosley left
pmichaud TimToady: are you suggesting that <strtonum> is a standard rule, like <alpha> or <digit>? 15:36
TimToady possibly
pmichaud or is that just a place holder for something like <Perl6::strtonum> ?
TimToady or something
pmichaud I vote for <number> instead of <strtonum>, if we do that. 15:37
TimToady that's taken
pmichaud we can change the existing <number> :-)
<strtonum> as a name probably doesn't quite work.
TimToady yes, we could
pmichaud maybe <stdnum> 15:38
TimToady <numeric>
pmichaud <numeric> works for me.
[Coke] Whenever TimToady says "possibly", I hear it as "mayyyyyyyyyyyyyyyyyyyyyybe".
pmichaud [Coke]: you are perceptive. :)
[Coke] ah, I was going for silly. ;) 15:39
TimToady possibly means possibly <mutter>not</mutter>
pmichaud <numeric> is the set of things that Str.Numeric recognizes
TimToady that's why I suggested it :)
pmichaud you gave the name but not the reason :)
TimToady okay, then pmichaud++ gets the credit :) 15:40
pmichaud not all of us automatically see the connections in your brane :)
TimToady you and me both
15:41 _twitch left
dalek d: 516268a | larry++ | STD.pm6:
s/strtonum/numeric/
15:43
15:43 mj41 left 15:45 wtw left 15:49 mberends left
pmichaud do we expect this to work? say +":16< ffff #`(hah!) >" 15:51
15:51 molaf left
pmichaud moritz: okay, I'm convinced we need two codepaths. Str.Numeric will use a fast converter when it recognizes the string, and fall back to eval(self) when it doesn't. 15:53
it would be nice if the compiler could also use the fast converter, but that's not necessary. 15:54
15:54 jferrero left 15:55 jferrero joined
pmichaud or, more likely, eval(self) if $_ ~~ /<numeric>/ 15:56
or something like that <waves hands about in a TimToady++ like fashion>
for me, "fast converter" should handle decimal ints, rats, and nums. If it can easily handle the predefined radix forms ('0x', '0o, ...) that's fine too, but I'm not as picky about that. 16:02
TimToady obviously you don't want to set up for a code injection
pmichaud right, that's why we need the <numeric> test.
and eval(...) doesn't have to be a real eval -- it just needs to get into the current parser and compiler somehow. 16:03
TimToady if we're doing constant folding right, the .ast should be easily foldable
if not prefolded by the parser 16:04
pmichaud yes, I suppose we could do some variation of (self ~~ /<numeric>/).ast
16:05 cognominal_ joined
pmichaud that makes a lot more sense 16:05
TimToady and if a number doesnt fold itself, then there's an indication of a security hole, or something marked impure that shouldn't be
sorear TimToady: If I put "say 2" in CORE.setting and then ran a program consisting of "use Test;", how many times would you expect 2 to be printed? 16:07
pmichaud need lunch.. bbiah
16:08 cognominal left, benabik left
cbk How can I push|access|update the last element in an muti-dimensional hash of arrays? I have tried everything and completely at a lost here. 16:10
so far i have %materialPriceHistory = ( XFine => [40], Fine => [30], Std => [20], ); 16:11
sorear cbk: Hashes are unordered, they don't have last elements.
PerlJam cbk: perhaps you wanted to use an array instead of a hash? 16:12
cbk I want a hash of arrays, and need to update/push a value to the last elem
moritz %hash.values>>.push($new_elem)
%hash.values>>.[*-1] = $new_elem xx * 16:13
PerlJam cbk: the last element of all of the arrays?
16:13 al_form joined
moritz that would be %hash.values>>.[*-1] 16:14
cbk PerlJam no each key will have different value in its array (this reps. price history)
so each month I will update the current price for each key in the hash 16:15
16:15 al_form left 16:16 donri left
moritz so you have a list of new prices? 16:16
16:16 donri joined
cbk moritz that gets calc. based on other values 16:17
PerlJam cbk: do you have the list of values all at once (like in an array or an analogous hash structure) ? 16:18
16:18 cognominal_ left, cognominal_ joined
moritz so something like for %hash.kv -> $k, $v { %hash{$k}.push: calculate_new_price($v) } ? 16:19
cbk PerlJam I have the values all at once
moritz, yes i think
PerlJam moritz++ your ESP-fu is great today :) 16:20
cbk moritz so is there a space between .push: calculate...?
moritz cbk: yes 16:22
16:22 ab5tract joined
cbk moritz, ok 16:22
16:24 jerome joined
JimmyZ_ rakudo: my %hash9; %hash9{1} = 2; for %hash9 -> $k, $v { say $k; $v; } # why it doesn't work? 16:24
p6eval rakudo b4486e: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in <anon> at line 22:/tmp/YvaoJ_kUBR␤ in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp␤»
16:25 JimmyZ_ left
jlaire because of missing .kv, but that's LTA 16:28
cbk moritz, Thank you! that worked flawless: output form say %history.perl {"xFine" => [40, 50, 9999], "fine" => [30, 9999], "std" => [20, 9999]} 16:29
someone should give you that ++ thingy!
TimToady sorear: the setting is intended to provide only a lexical context, not a dynamic context. I'd not expect a say to do anything except when actually compiling the setting
16:29 zby_home_ joined
moritz cbk: you do it :-) 16:29
cbk moritz++ 16:30
moritz cbk: and wow, you're prices are sure going up :-)
TimToady sorear: the specced way to get the setting to do dynamic stuff is by defining (lexically) a MAIN
cbk moritz thats just testing code
16:42 masak joined
masak greetings, pandas. 16:42
16:43 daxim left, lichtkind joined 16:45 daniel-s left 16:53 envi joined
dukeleto tadzik: ping 16:55
sorear o/ masak 16:59
masak \o 17:01
thou_ masak: have you looked at plackdo? at first blush, it looks nicely coded and like a lot of work has been done already; it's more complete than Web.pm + HTTP::Server::Simple combined, at this point.
dalek ecza: 02fae77 | sorear++ | / (4 files):
eval code runs with eval caller as root of protopads, not just runtime
17:02
masak thou_: I'm not sure I've even heard of it, but the news makes me happy. who is coding it?
thou_ is lopnor (plackdo author) on irc? i saw a talk from him about plackdo on the 'net.
masak ah ,lopnor. 17:03
s/ ,/, /
I think I've seen em around, yes.
thou_ you've been hanging around with Moukkedar too much
masak :P
17:03 dakkar left
masak (sorry, moritz) :/ 17:03
masak learns the appropriate spelling of 'pedestal' 17:04
thou_ github.com/lopnor/p6-plackdo
17:04 thou_ is now known as thou
dukeleto likes plack for perl 6. Somebody asked me if it existed at my perl 6 talk yesterday 17:06
eiro /plack/ and wake-up($eiro)
thou re: plackdo, all the tests pass with current rakudo-master
eiro thou, is there a plack version of perl6 ?
OMG awesome!
thou eiro: that's what plackdo seems to be going for -- it's pretty much a straight port
17:07 ab5tract left, jevin left 17:09 jevin joined
thou imo it makes sense to put effort into that project (add more Plackdo::Handler::*, Middleware, etc.). from what i could tell from lopnar's talk in taipei, i think he'd be open to contributions and making it a community project. 17:09
i'd like to see some modules moved up a level (Plackdo::HTTP::* -> HTTP::*, for example)
pmichaud moritz: I'm going to create a nqp opcode that will do basic radix conversions for us as a primitive. We can then build up more complex sequences from that. 17:11
moritz pmichaud: where "basic radix conversion" means (str, base) -> int ?
masak a Container has @.contents, but what does a Platform have? 17:12
pmichaud (str, base) -> (value, denominator, pos)
moritz @.rails
masak (i.e. a thing which you can put things "on", not "in".)
moritz @.parking-lots
pmichaud "denominator" is basically radix ** number of digits in the str
(excluding trailing zeroes)
masak maybe I should call it Base, but that's a bit OO-overloaded too.
moritz and pos? 17:13
pmichaud pos is the number of characters it consumed
moritz ok
pmichaud or, more accurately, it's the position at which it stopped consuming
masak goes with @.things for the now
thou eiro: i think it'd be awesome to have a solid, community-supported implementation that is basically Plackdo + LWP on perl6, to cover the complete web development space from server > middleware > web app + user-agent/foo; i think it's pretty attainable right now with a bit of organization
moritz where should tests for the Str.Numeric conversion go? 17:14
17:14 jferrero left
pmichaud make a new test file, perhaps? 17:14
17:14 MayDaniel joined
moritz probably best 17:14
pmichaud basic_data_types/str-something
02-basic_data_types/str-numeric.t
moritz or maybe S32-str/numeric.t ?
pmichaud could go there too, I suppose. 17:15
moritz doesn't like the proliferation of S02-builtin_data_types tests
pmichaud there's not a clear line between what goes into 02-basic_data_types and S32-*
17:15 jferrero joined
pmichaud and I absolutely abhor the name "S02-basic_data_types", especially the mixing of hyphen and underscores part 17:15
plus it's so long for something so... basic
it's improperly huffmanized
if the S02-basic_data_types found their way into S32-* equivalents, I think I'd be pretty happy. :) 17:16
thou eiro: i've never used plack/rack/wsgi for anything serious, but i'm hacking on November wiki as a way to deepen my perl6 knowledge (and contribute to the community), so i've got some motivation for being part of such an effort. are you involved in porting Dancer to perl6? or do i mis-remember?
sorear dukeleto: perl 6 talk yesterday, where? 17:20
thou moritz, pmichaud: imo S02 is too big already, so i'm +1 on the idea of moving at least whatever tests make sense in a different section out of the S02-* namespace 17:21
masak alpha: class C { has $.name = self.WHAT.perl }; say C.new.name
p6eval alpha : OUTPUT«C␤»
masak rakudo: class C { has $.name = self.WHAT.perl }; say C.new.name
p6eval rakudo b4486e: OUTPUT«C␤»
masak nom: class C { has $.name = self.WHAT.perl }; say C.new.name
p6eval nom: OUTPUT«Symbol 'self' not predeclared in <anonymous> (/tmp/EUlC244vWj:1)␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (compilers/pct/src/PCT/HLLCompiler.pir:107)␤»
masak awww
eiro thou, i'm just a plack user. i never developped anything for plack
masak eiro: salut! \o
thou eiro: ok. maybe you can check out plackdo's current state, and see what things you're used to in plack that are missing there, to set some priorities on what to implement next 17:22
eiro but basically, i'm playing with tatsumaki, Template::Declare and MooseX::Declare to make long-polled powered webapp. perl6 version would be awesome
17:22 mj41 joined
eiro hello masak! i oversold nom at #rmll so i expect it to be the next rakudo star :) 17:23
masak eiro: :)
thou hmmm, i bet tatsumaki-style backend for perl6 would be pretty hard to implement at the moment
masak kinda liked the name "Rakudo Moon"
eiro ok
thou, it's just an idea. i don't think i will have time to play with it actually (i have stuff to do and i'm stuck with perl5) 17:24
but i'll watch your work :)
thou eiro: ok, that's good :-)
masak eiro: Rakudo on nom will be great -- but it probably won't astonish until the optimizer lands a few months later. 17:25
17:26 patrickas joined
patrickas o/ 17:26
masak patrickas! \o
17:26 perlhack joined
masak perlhack! \o/ 17:26
perlhack long time no see
masak
thou is excited about the non-optimization things it'll open up, too; consistent underlying object model should make it eas<y ier> to implement some of perl6's more esoteric introspection and other features
masak 还久不见了
thou ni hao, perlhack!
patrickas I am trying to build nom on win32 (for the first time) and getting an error : opcode index out of bounds on library `core_ops'. Found 1084, expected 0 to 1070. 17:27
dalek ast: b32ed21 | moritz++ | S03-operators/boolean-bitwise.t:
fudge boolean-bitwise.t for rakudo
ast: 0fd99d3 | moritz++ | S (2 files):
start to systematically test string numification

Also corrects a test in num.t, and removes another wrong test
perlhack thou: ni hao
moritz patrickas: sounds like an outdated parrot or rakudo build interfering 17:28
patrickas am I out of luck since jnthn++ is on vacation ?
perlhack it's a nice day
masak
patrickas I'll make clean
masak perlhack: yes, it is. :)
patrickas maybe even realclean
moritz patrickas: and don't forget to delete the installation folder too 17:29
patrickas which folder ?
17:30 Jackneill left
moritz the 'isntall' subfolder of rakudo 17:30
erm, install
minus typos :-)
17:30 Jackneill joined
flussence if you're using a git checkout the easiest way is git clean -xdf 17:30
(and the same in ./parrot if you do it that way)
perlhack i'm still sleepy.
moritz perl6: say 0x123
p6eval pugs, rakudo b4486e, niecza v7-33-g02fae77: OUTPUT«291␤» 17:31
perlhack pugs Audrey Tang
sorear huh. 17:32
17:32 mj41 left
sorear use Test; $_ = 5 dies 17:32
remove use Test and it works
moritz where? niecza?
sorear ya
patrickas sorear you have to contact the guy who wrote niecza for help with that :-p 17:33
17:35 perlhack left
dukeleto phenny: tell tadzik panda error gist.github.com/1081878 17:39
phenny dukeleto: I'll pass that on when tadzik is around.
17:40 perlhack joined
perlhack I share with you how much vocabulary 17:40
17:40 jaldhar left
masak perlhack: "How much vocabulary do I share with you?" 17:41
perlhack: note the reversed word order, and the word "do" because of it. 17:42
perlhack: that's common for questions in English.
perlhack yes. thanks .
17:43 mberends joined
perlhack masak, how much vocabulary ?? 17:43
17:43 MayDaniel left
masak perlhack: I am not sure how to answer that question. 17:43
17:43 benabik joined
masak perlhack: you seem to be picking up English fairly quickly, though. 17:44
patrickas same error after cleaning / deleting / re making !
perlhack thinks .4000 can do ? 17:45
masak
masak perlhack: I always find such measures more or less meaningless.
perlhack: are you asking because you refuse to learn word 4001? or because you won't do it if it turns out you need 5000 words to get by? 17:46
perlhack: or because you think word 4000 is really good to know, but word 4001 is useless?
lucs About 500 words can be enough for everyday conversation. 17:47
perlhack it 's useful.
masak
a !!!! 500?
masak perlhack: if you say so :P
perlhack: but I can't answer it for you, I'm afraid. 17:48
lucs perlhack: Sure. Not too many technical terms in those, but still :)
perlhack haha
moritz perl6: say 0o77
p6eval pugs, rakudo b4486e, niecza v7-33-g02fae77: OUTPUT«63␤» 17:49
perlhack masak, thanks
lucs, thanks 17:50
:-) i often exchange and Audrey Tang. 17:53
masak & 17:56
perlhack masak, what mean "&" ? 17:57
opreator ?
lucs It means he is now in the "background" (like when it's used in a shell command). 17:58
17:58 [Coke] left 18:00 [Coke] joined
perlhack ouch! i am a Linux administrator.i see it 18:00
lucs
lucs :)
18:00 mberends left
perlhack i would like to exchange with you for 10 years 18:00
lucs One day at a time :) 18:01
18:01 awwaiid joined
perlhack yes.haha 18:01
i will be very good native english speaker. 18:02
18:02 tokuhir__ left
moritz perl6: say :36<az> 18:10
p6eval pugs, rakudo b4486e: OUTPUT«395␤»
..niecza v7-33-g02fae77: OUTPUT«===SORRY!===␤␤Action method alnumint not yet implemented at /tmp/wl6rxRQx1R line 1:␤------> say :36<az⏏>␤␤Action method rad_number not yet implemented at /tmp/wl6rxRQx1R line 1 (EOF):␤------> say :36<az>⏏<…
dalek ast: a207da9 | moritz++ | S32-str/numeric.t:
more numification tests
18:13
18:14 mberends joined, [Coke] left, perlhack left
moritz std: 1e1_0 18:17
p6eval std 516268a: OUTPUT«ok 00:01 118m␤»
18:18 [Coke] joined
dalek ast: cbe385a | moritz++ | S32-str/numeric.t:
more numification tests
18:20
18:23 birdwindupbird left 18:26 impious joined
dalek ecza: 8d724eb | sorear++ | lib/ (2 files):
Fix use Test; $_ = 5
18:30
18:30 mberends left 18:33 patrickas left
moritz std: :1_0<34> 18:36
p6eval std 516268a: OUTPUT«===SORRY!===␤Extra argument not allowed; pair already has argument of 1 at /tmp/X43Gsgk2SH line 1:␤------> :1_0⏏<34>␤Check failed␤FAILED 00:01 118m␤»
moritz pugs: :8<42.35> 18:37
p6eval pugs: ( no output )
moritz pugs: say :8<42.35>
p6eval pugs: OUTPUT«34.453125␤»
18:38 im2ee joined
pmichaud moritz: are you working on string literals or also on Str.Numeric ? 18:43
wait
are you working on numeric literals (compile time) or also on Str.Numeric (run time)?
I'll have some code together for the "fast converter" of runtime strings in a couple of hours ($otherjob is in the way) 18:44
18:44 envi left
tadzik dukeleto: pong 18:46
phenny tadzik: 17:39Z <dukeleto> tell tadzik panda error gist.github.com/1081878
tadzik phenny: tell dukeleto that's because of too old prove, no -e switch in it 18:47
phenny tadzik: I'll pass that on when dukeleto is around.
tadzik phenny: thank you darling
TimToady sorear: the new 2nd entry for rosettacode.org/wiki/Pythagorean_triples#Perl_6 shows that niecza can be pretty fast at some things :) 18:48
it can count all pythagorean triples with perimeter less than a billion 18:49
mikemol Some of p6eval's output is really screwing with irssi->screen->PuTTY. Weird.
[Coke] can you see the butterfly in the topic? 18:52
mikemol Yeah
[Coke] (that'll rule out generic utf8 issues)
mikemol img219.imageshack.us/img219/5812/p6...nputty.png
TimToady sorear: mind you, it heated up my laptop for an hour or so to get the last line, so it'd take longer on your machine... 18:53
pmichaud I remember when Juerd++ once reported that an early version of PGE was able to handle a regex that choked P5 (although it took a really time to do it) :) 18:54
anyway, niecza++, as always
TimToady your long is too short
18:54 ng1962 joined
TimToady I think rakudo could run it too if it didn't die on the recursion limit 18:55
pmichaud indeed, it is.
(my long is too short, that is)
PerlJam he accidentally his long.
pmichaud oh, we could probably bump the recursion limit in Rakudo.
tadzik oh, you stumbled upon that too? :) 18:57
mikemol I wonder if it would be possible to detect cycles(infinite recursion) in recursive algorithms, and have that as a useful means of triggering a stack-overflow-like exception.
With detection of cycles, it might be generally acceptable to otherwise bump recursion limits.
dukeleto tadzik: ok, I will let my buddy know. I gues we need a newer TAP::Harness
phenny dukeleto: 18:47Z <tadzik> tell dukeleto that's because of too old prove, no -e switch in it
tadzik dukeleto: I was considering defaulting to parrot_prove in panda, but never tried that in action 18:58
18:58 skangas left
dukeleto tadzik: also, some people from PDX.pm that a switch be added to prove to tell it we are running perl 6 tests 18:59
tadzik: i.e. making -l work for perl 6 stuff
dukeleto dreams of typing prove -6 -rv t/
tadzik dukeleto: you remember the first thing I mentioned as a desired feature for panda? :) 19:00
19:01 wamba left
dukeleto tadzik: indeed. 19:01
tadzik: that panda should be able to run tests? or just removing the prove dependency? 19:02
tadzik removing the prove dependency. It can run tests now, it does :)
dukeleto tadzik: yes, but you need Makefiles to run tests. Yuck. 19:03
tadzik why so?
I don't
dukeleto tadzik: ufo && make test ?
tadzik: it requires makefiles, no?
tadzik dukeleto: why would you need to use ufo?
panda does not depend on ufo nor make 19:04
dukeleto tadzik: how does one run panda tests without ufo, make or prove?
tadzik ha, one doesn't. You need prove 19:05
in a dreamworld you don't
dalek ast: 270340f | moritz++ | S32-str/numeric.t:
more Str -> Rat,Complex tests
p: 6a6285f | pmichaud++ | src/QRegex/P6Regex/Actions.nqp:
Remove some debugging output.
p: 30ed7ec | pmichaud++ | src/ops/nqp.ops:
Add nqp_radix opcode for simplifying string->number conversions.
p: 0eea302 | pmichaud++ | src/ops/nqp.ops:
Fix underscore bug in nqp_radix opcode.
dukeleto tadzik: sure. So if you want to remove the prove dependency, what do you replace it with? It seems like a TAP::Harness for Perl 6 is needed
tadzik aye
dukeleto tadzik: we have a TAP::Harness in parrot, so rakudo benefits from that, but other Perl 6 implementations don't 19:06
tadzik maybe we could reuse parrot's TAP::Harness
or we may want a pureperl6 harness
19:06 ng1962 left
[Coke] pmichaud: something like github.com/partcl/partcl/blob/mast...b.pir#L338 will work. 19:06
dukeleto tadzik: sure. that would be much nicer. It feels wrong to know that we have TAP::Harness implemented at the VM level, but it would need to be rewritten at a higher level to be useful for Perl 6 implementation other than Rakudo
tadzik that doesn't sound too hard to do 19:07
19:07 cipherte1t joined, Jackneill left
pmichaud [Coke]++ # thanks 19:07
dukeleto tadzik: here is my version of TAP::Harness in PIR: github.com/leto/tapir
19:07 ciphertext left
dukeleto tadzik: it at least has some tests that you can steal 19:07
tadzik: beware, it was last developed on parrot 1.8.0, so it is composting 19:08
dukeleto likes to say composting instead of bitrotting. It is closer to reality, where old code provides mental nutrients for coders to write new code 19:09
tadzik I'll cover me nose
but for now, I'm gone :) see you later
19:14 cooper joined, cooper left, cooper joined
[Coke] in general, I can't see perl6 really taking advantange of things written in PIR. 19:15
slavik I agree
wait, [Coke], what do you mean?
dalek ast: 0aa6858 | moritz++ | S32-str/numeric.t:
more Str -> Complex conversion tests
19:18
19:19 Trashlord left
moritz 131 tests for Str.Numeric 19:19
pmichaud cool, I'm writing up a version now. 19:20
19:20 Trashlord joined
moritz ok, what type should +'Inf' return? 19:20
Num? Int?
TimToady er...Cool?
moritz then Cool would need storage 19:21
pmichaud It could just be a defined type.
TimToady thinks about Inf as a role 19:22
moritz should +'' also fail? (just to be sure) 19:23
[Coke] slavik: well, rakudo, specifically, obviously; but I don't think the perl6 community gets a lot of bang using .net or parrot specific functionality. Seems like it would have to be something pretty specific to the machine to make it worthwhile.
TimToady moritz: we don't require a leading 0 on any other number, so why do we require one on '0'? :) 19:24
dalek ecza: 4fc3649 | sorear++ | lib/CLRBackend.cs:
Implement labels and multisubs for protopad use
19:25
moritz TimToady: because we don't parse + as +0 :-)
[Coke] ... ew.
moritz TimToady: I'd be fine with numifying the empty string to 0, just want to know
sorear TimToady: I think Inf is an antirole 19:26
TimToady it's more of a failure
sorear TimToady: Int ~~ Numeric but Inf ~~ Int
the order of subtyping is reversed from the regular roles
TimToady .o(interesting values of 'bottom')
sorear I imagine you've already thought about this, since you talked about "Failure roles" 19:27
how does Failure ~~ Int come to be true, implementationally speaking?
TimToady I think of it as Failure getting mixed in, so Int is a parent 19:29
masak pmichaud: I once found a million-character string that Perl 5 choked on but Rakudo/PGE could handle just fine (but slowly).
sorear how does Failure know to do that?
masak Failure but Int but Num but Rat but Str... # p'haps not... 19:30
sorear: could you say a bit more about the concept of an 'antirole'? 19:31
TimToady that's backwards, it'd be Int but Failure 19:32
masak ah, but of course.
TimToady like the typical jazz musician: Cool but Failure
masak :P
sorear masak: my Numeric $x = Int works because Numeric is a role. my Int $x = Failure is required to work, so Failure must be the opposite of a role 19:33
19:33 wamba joined
sorear I don't actually know how this is supposed to work 19:33
it might not even make any sense
TimToady what about Int but Failure doesn't make sense?
masak seems Failure would be the only such entity, though.
slavik [Coke]: rakudo can't load .pir at the moment :( 19:34
TimToady Failure would just be 'bottom'-colored paint
sorear masak: my Int $x = Inf; my Num $x = Inf
masak: NaN, too
masak sorear: oh! true! they're like "small bottoms".
local bottoms.
TimToady Inf and NaN would likely be considered defined bottoms
perl6: say Inf.defined 19:35
sorear TimToady: the process by which "Failure" promotes itself to "Int but Failure" is ill-defined and might turn out to be undefinable
p6eval rakudo b4486e, niecza v7-35-g4fc3649: OUTPUT«Bool::True␤»
..pugs: OUTPUT«1␤»
dalek ast: b29fccf | sorear++ | S (2 files):
S32-num/power, S12-class/lexical: refudge tests for niecza
moritz TimToady: so, +'' == 0 ?
TimToady I think that's probably relatively harmless, and likely to be the proper degenerate case for certain algorithms 19:36
PerlJam Also very Perl5y
(in a good way IMHO) 19:37
TimToady I was somewhat serious about the funny exception that 0 requires a leading 0
masak .oO( if there were a prefix:<*>, *'' would be 1... )
TimToady perl6: say [*] ''.comb 19:38
19:38 Holy_Cow joined
p6eval pugs, rakudo b4486e: OUTPUT«1␤» 19:38
..niecza v7-35-g4fc3649: OUTPUT«0␤»
TimToady ooh, nieczabug
sorear (niecza is broken here, not making a statement)
dalek ast: 220b45a | moritz++ | S (2 files):
shuffle numification tests, and move one to S32-str/numeric.t
19:39
ast: 2a981f3 | moritz++ | S (2 files):
remove duplicate Str -> Numeric tests, move others to numeric.t
19:39 felliott joined
masak rakudo: our sub prefix:<*>($n) { [*] $n }; say *'' 19:39
p6eval rakudo b4486e: OUTPUT«0␤»
masak rakudo: our sub prefix:<*>($n) { $n || 1 }; say *'' 19:40
p6eval rakudo b4486e: OUTPUT«1␤»
felliott Good aftersomething, #perl6! 19:41
masak felliott, happy greetings!
felliott hey, masak!
TimToady Good beforechristmas!
masak enjoy your afternovember!
felliott Have a nice betwixtevents! 19:42
masak :P
felliott rakudo: ?{say "mooo";};
masak .oO( between transitions )
p6eval rakudo b4486e: ( no output )
masak felliott: not an immediate block.
felliott Should blocks be eval'd in boolean context? 19:43
masak nope.
felliott ah-ha!
masak rakudo: ?{say "mooo"}()
p6eval rakudo b4486e: OUTPUT«mooo␤»
masak rakudo: say ?{say "mooo"}()
p6eval rakudo b4486e: OUTPUT«mooo␤Bool::True␤»
felliott rakudo: if {say "moo"; 0;}() && {say "grr";}() { say "yay"; } else { say "boo"; } 19:44
p6eval rakudo b4486e: OUTPUT«moo␤boo␤»
felliott cool. 19:45
TimToady nom: my $x = 42; $x //= say "oops, didn't short circuit" 19:46
p6eval nom: OUTPUT«oops, didn't short circuit␤»
TimToady nom: my $x = 42; $x = $x // say "oops, didn't short circuit"
p6eval nom: ( no output )
dalek ast: 9dc48a0 | moritz++ | S (2 files):
move tests for Inf and NaN Str.Numeric
ast: e49f7bb | moritz++ | S03-operators/context-forcers.t:
fix plan
19:47
TimToady assign metaop needs to be transparent to thunkification
moritz it's sentences like that that make me think I never learned English :-) 19:49
19:51 spq1 joined
PerlJam moritz: it's just jargon. Words like "transparent" suddenly become highly specialized and when mixed with made-up words like "thunkification", you suddenly don't know what anyone is saying :-) 19:51
19:52 mtk left 19:53 bluescreen10 left
felliott I'm still working on flipflop, and I've updated flip-flop.t. Can I push to roast or will that goof up nom? 19:53
moritz felliott: you can 19:54
felliott flipflop.t is still commented out in spectest.data
thanks, moritz
moritz felliott: I hope you're working on the flipflop implementation in nom?
felliott no, currently in master.
After I get master done, I'd update it to nom, 19:55
TimToady I don't believe there's anything in the test suite that actually checks that //= short circuits
that's LHF for someone
moritz 244: for @array1 { .key //= ++$i }
in S04-statements/for.t
TimToady in a comment
or a string
unless I'm out of date 19:56
moritz just ack'ed, could very well be in a comment
TimToady oh, okay, new version is different 19:57
19:57 mtk joined
sorear how many spectests does nom currently pass? 19:58
moritz ~7k
TimToady funny it says rakudo doesn't implement [+]
19:59 mj41 joined
dalek ast: 4213c39 | moritz++ | S (2 files):
move some tests out of numeric-context.t, and delete the file (the tests are now in S32-str/numeric.t
19:59
TimToady still, that's not the right file to be testing //= in 20:00
moritz agreed
dalek ast: 3f8b669 | (Fitz Elliott)++ | S03-operators/flip-flop.t:
[S03/flip-flop] rewrite flip-flop tests
20:01
TimToady nap &
dalek kudo/nom: f7e4cec | moritz++ | src/Perl6/Actions.pm:
(re-)introduce radcalc, but smarter than before
20:04
kudo/nom: 64fe676 | moritz++ | src/Perl6/Actions.pm:
allow arbirary number of trailing zeros. Wins back the few tests that the previous commit regressed
kudo/nom: 8097419 | moritz++ | src/Perl6/Actions.pm:
hopefully speed up stripping of trailing zeros
kudo/nom: 09a43b7 | moritz++ | src/Perl6/Actions.pm:
remove (mostly PIR) functions that are now mostly unused
kudo/nom: e939a8b | moritz++ | src/Perl6/Actions.pm:
get :16<DEAD_BEEF> style literals working
kudo/nom: 01df600 | moritz++ | src/Perl6/ (2 files):
refactor numeric constants to do the PAST::Want magic in a single place
kudo/nom: 9c93942 | moritz++ | src/Perl6/ (2 files):
Merge branch 'nom-num' into nom
kudo/nom: 76d6591 | moritz++ | t/spectest.data:
remove testfile from spectest.data, because it is gone from roast
20:05 bluescreen10 joined
dalek ast: 881b41e | moritz++ | S03-operators/short-circuit.t:
test that //= and ||= short-circuit, TiimToady++
20:05
20:06 mtk left
moritz felliott: fwiw, currently rakudo master currently checks out a specific revision of the tests 20:07
20:07 y3llow left, pothos left
moritz felliott: I guess the easist way to get new tests into master is to make a branch is roast, and use that 20:08
20:09 mtk joined
moritz does that 20:09
20:09 y3llow joined, pothos_ joined
dalek ast/rakudo-master: eb0e2b9 | (Fitz Elliott)++ | S03-operators/flip-flop.t:
[S03/flip-flop] rewrite flip-flop tests
20:10
20:10 pothos_ is now known as pothos
felliott Nice! Thanks, moritz++! 20:12
moritz there you go... 20:14
dalek kudo: 1ddda5e | moritz++ | build/Makefile.in:
track branch rakudo-master of the roast repository
20:20 Holy_Cow left
moritz enough test hacking for now 20:21
felliott Here is my second take at flipflop-as-macro, built off of pmichaud++'s code from 2011-07-04
20:21 Vlavv` left
felliott github.com/felliott/rakudo/commit/b4ce84a00c8 20:21
I had to complicate it a lot to get all the cases to work, but it's still about 40 lines shorter than my original version.
Plus, it's a lot more correct!
20:22 kaare__ left
felliott I wrote some pir (line 2486) to save the state, but I'm not confident in it. Does it look reasonable? 20:27
sorear felliott: does it work? 20:28
felliott yep. 20:29
sorear felliott: I'm suprised you have so much code in the actions there.
20:29 impious left
sorear I would have expected most of the logic to be in src/builtins somewhere 20:29
felliott handling the excluders and the sedlike flags complicate things a bunch. 20:30
PerlJam sedlike?
felliott fff won't flip and flop on the same input (like sed) 20:31
PerlJam oh
felliott sorear: src/builtins are for classes, right? 20:32
20:32 Vlavv` joined
PerlJam felliott: you're checking the symbol twice as much, once to call make_flipflop and then once again inside make_flipflop 20:33
felliott: perhaps you could pass $excl_lhs, $excl_rhs, $sedlike as parameters to make_flipflop ? 20:34
felliott ooh, good point. I can compress that.
20:37 Vlavv` left
felliott hmm, that would mean 8 elsifs inside method EXPR($/). Wouldn't it be better to keep the EXPR logic shorter and accept the repeated eqs? 20:38
20:40 Mowah left
sorear felliott: what will your code do with, say, [ff]? 20:40
dalek nda: ae46ebc | dukeleto++ | README.md:
Add a note to the readme about needing a recent TAP::Harness
20:41
20:41 tokuhir__ joined
felliott Not sure. 20:41
I just realcleaned, rebuilding now.
pmichaud we'll need an &infix:<ff> sub as well.
to handle the reduction cases. 20:42
same as we do for [||] and [&&]
felliott Ah, I hadn't considered that at all. Let me give it a whack. 20:44
moritz doesn't think that's important at all for now 20:45
pmichaud the &infix:<ff> sub ought to be as easy to do as the &infix:<||> and &infix:<&&> subs are. And I agree it's not important for the first cut.
moritz I'm not even sure that a reduction metaop makes sense for an operator that keeps state internally
20:45 im2ee_ joined
moritz if you have [ff] @a inside a loop where the length of @a varies 20:46
sorear felliott: for 0,1 { sub has_flop($x) { True ^ff False }; say has_flop() }
# ?
moritz what happens? is a separate state kept for each position?
sorear: signature binding error 20:47
PerlJam yeah, you'd need +@a - 1 state vars
sorear erp
felliott: for 0,1 { sub has_flop() { True ^ff False }; say has_flop() }
# ?
moritz PerlJam: but +@a isn't even constant
PerlJam for each iteration
sorear probably better to forbid ff-derived operatorsa 20:48
moritz so... the state vanishes between iterations? then what's the point of having state inside the operator?
moritz agrees with sorear
felliott not sure (and still building)
20:49 im2ee left
sorear in Perl 5, the ff operator uses an ordinary lexical variable to track state 20:50
PerlJam scoped to what?
sorear the sub 20:51
it might be closer to a state var 20:52
20:52 Vlavv` joined
sorear but it probably doesn't share between recursive levels, and it definitely doesn't share between clones of a closure 20:52
20:52 LoRe left
sorear which is what I was showing felliott 20:52
felliott's implemention keeps state in GLOBAL::
which might be wrong
S02 doesn't say a whole lot about fff 20:53
looks like TimToady specified 'state' semantics in Nov05 20:54
felliott sorear: my code uses the same state for both invocations
wrt for 0,1 { sub has_flop() { True ^ff False }; say has_flop() } 20:56
20:56 LoRe joined, ng1962 joined
moritz pugs: say True ^ff False 20:57
p6eval pugs: OUTPUT«*** No such subroutine: "&ff"␤ at /tmp/fEeEw4N6QL line 1, column 5 - line 2, column 1␤»
moritz pugs: say True ff False
p6eval pugs: OUTPUT«*** No such subroutine: "&infix:ff"␤ at /tmp/fpAbMDf4LH line 1, column 5 - line 2, column 1␤»
sorear pugs: say True till False
p6eval pugs: OUTPUT«*** ␤ Unexpected "till"␤ expecting "=", "(", ":", operator or ","␤ at /tmp/YZ2TOFnLrQ line 1, column 10␤»
sorear felliott: I'll add a test for that then 20:58
21:02 spq1 left 21:05 soh_cah_toa joined
felliott rakudo: for 0,1 { sub has_flop() { say "moo"; }; has_flop() }; 21:05
p6eval rakudo 1ddda5: ( no output )
felliott why doesn't it say moo?
21:07 ng1962 left
felliott rakudo: for 0,1 { say "moo"; }; 21:07
p6eval rakudo 1ddda5: OUTPUT«moo␤moo␤»
felliott rakudo: for 0,1 { say "moo"; sub hello() { say "hello"; }; };
p6eval rakudo 1ddda5: ( no output )
moritz rakudo: say 1 21:09
p6eval rakudo 1ddda5: OUTPUT«1␤»
moritz felliott: you need the colon after 'rakudo'
felliott ? 21:10
moritz sorry, I can't read anymore
I should go to bed
rakudo: for 0, 1 { say $_ } 21:11
p6eval rakudo 1ddda5: OUTPUT«0␤1␤»
felliott bed sounds nice.
moritz rakudo: for 0, 1 { say "moo"; sub hello() { say "hello"; }; }
p6eval rakudo 1ddda5: ( no output )
moritz rakudo: for 0, 1 { say "moo"; }
p6eval rakudo 1ddda5: OUTPUT«moo␤moo␤»
moritz wonders if he or rakudo is WTFy here
felliott any idea what x_enter_sublog is? It shows up in the pir. 21:12
PerlJam looks like a rakudo context mishap
felliott I'm grepping through parrot now.
pmichaud x_enter_sublog is a rakudo opcode for keeping track of sub entry
[Coke] doesn't sound like a parrot thing.
pmichaud++ 21:13
pmichaud it's been around for a while, so it's not likely the culprit
sjn moritz: did you intend to call hello() there?
PerlJam rakudo: for 0, 1 { sub hello() { say "hello"; }; say "moo" }
p6eval rakudo 1ddda5: ( no output )
felliott curses. it had proximity in it's favor. 21:14
sorear perl6: for 0, 1 { sub hello() { say "hello"; }; say "moo" }
p6eval niecza v7-35-g4fc3649: OUTPUT«Potential difficulties:␤ &hello is declared but not used at /tmp/GdZNEUDP0V line 1:␤------> for 0, 1 { sub hello⏏() { say "hello"; }; say "moo" }␤␤moo␤moo␤»
..rakudo 1ddda5: ( no output )
..pugs: OUTPUT«moo␤moo␤»
dalek ast: c1ee42c | sorear++ | S03-operators/flip-flop.t:
Test "state" semantics of ff, $x ff * handling
sorear I think niecza's result is the most awesome one here. 21:15
PerlJam niecza++ indeed :)
pmichaud I don't know why rakudo is having trouble with that.
PerlJam I bet --target=PAST would show it. 21:16
(or at least give good clue)
pmichaud clue:
sjn neverminds 21:17
lichtkind TimToady: did you looked into the concept of a channel in Go ?
pmichaud rakudo: for 0,1 { sub hello() { say 'hello'; }; say 'moo'; }; say 'alive';
p6eval rakudo 1ddda5: OUTPUT«alive␤»
pmichaud so, it's not dying.
I'm guessing it's a problem with lexicals somewhere. 21:18
PerlJam lexicals? how so? 21:20
21:21 mkramer joined, mkramer left
felliott How can I run the pir generated by target=pir? 21:21
I'd like to sprinkle some "say"s in there and rerun it.
PerlJam I was thinking it was a context problem. The sub declaration is in void (or whatever) context and that got mis-propagated to the for loop
pmichaud felliott: not currently possible in master, I don't think. 21:24
felliott drat 21:25
nom: for 0,1 { sub hello() { say 'hello'; }; say 'moo'; }; say 'alive'; 21:26
p6eval nom: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤current instr.: '_block1010' pc 433 ((file unknown):156) (/tmp/7D3BisFsrN:1)␤»
21:29 mj41 left 21:38 wolfman2000 left 21:42 wamba left 21:43 Psyche^ joined
felliott rakudo: say "before"; my $a = 2; while $a-- { say "woof"; sub hello() { say "hello";}; }; say "alive"; 21:46
p6eval rakudo 1ddda5: OUTPUT«before␤woof␤woof␤alive␤»
21:47 Patterner left, Psyche^ is now known as Patterner
felliott rakudo: ./perl6 -e 'say "before"; for 0,1 -> $a { say "woof"; sub hello() { say "hello";}; }; say "alive";' 21:49
p6eval rakudo 1ddda5: OUTPUT«===SORRY!===␤Confused at line 22, near "./perl6 -e"␤»
felliott rakudo: say "before"; for 0,1 -> $a { say "woof"; sub hello() { say "hello";}; }; say "alive";
p6eval rakudo 1ddda5: OUTPUT«before␤woof␤woof␤alive␤»
21:50 drbean joined
TimToady std: [ff] 1,2,3 21:53
p6eval std 516268a: OUTPUT«===SORRY!===␤Can't reduce with ff because conditional operators are too fiddly at /tmp/_Q84S6lEPP line 1:␤------> [ff]⏏ 1,2,3␤Check failed␤FAILED 00:01 120m␤»
TimToady that's what I thought...
lichtkind: yes, they're basically just named message queues 21:56
lichtkind TimToady: so far i undersand yes but i like the concept
TimToady it's not clear we want to tie message sending that closely with the function interface in p6 though
much like we detangled coroutines from functions, I'd like to keep feeds separate too
it's not clear whether ==> my @queue serves the same purpose 21:57
or my @queue ==>
lichtkind hej i thought almost the same way about ===> :) 21:58
TimToady we might want something a bit more declarey to create a "real" channel
lichtkind the syntax in go sucked a bit but the functional simplicity sttrikes
TimToady certainly we want to be able to end an event queue in a multi dispatch 21:59
also maybe need to think about how the endpoint of a feed can handle events serially or parallely 22:00
the latter might just be a hyper feed 22:01
the interesting thing about the typical feed op is that it turns a noun (the list) into a verb (the operator), which tends to make one think inside out 22:03
lichtkind they solved that my an additional keyword a kind of switch statemend which whom you knot these things together
TimToady I think we might just get it all to fall out of available concepts in p6 22:04
lichtkind im not shure i got the ladder half of the last sentence
with the inside out
so its no topic for perl 6? 22:05
TimToady ordinary you can't treat the @list of push @array, @list as a verb
but with @list ==> push @array, the feed looks like an infix 22:06
which, as an operator, is a kind of verb idea
lichtkind so far i got it :) 22:07
even at the first time :)
22:07 cipherte1t left, ciphertext joined, mkramer joined
TimToady it's hard to say a concept like X==> when the lazy list remains simply an argument to push 22:08
22:08 masak left
TimToady though maybe X doens't make much sense, just as it doesn't with assignment 22:08
anyway, if { ... } ==> &eventloop 22:10
then I suspect eventloop is dispatched each event
and eventloop can be a multi
eventloop functions something like a go routine here 22:11
with lazy semantics, the feed doesn't run another instance of eventloop until the previous one finishes 22:12
and requests a new one
or may that's just eager 22:13
sorear should I be paying attention to this?
TimToady but hyper would fire off a bunch of eventloops in parallel
sorear: maybe, it's just some longterm brainstorming
that is, something I've been mulling for a long time 22:14
anyway, I think firing off parallel event handlers probably falls out of hyper 22:15
22:15 im2ee_ left, felliott left
TimToady and named channels probably comes from naming ==> endpoints with functions 22:16
if that's not too confusing
lichtkind i was thinking about because i prepare a talk about new langs la go factor and rebol and how new there ideas really are and how it compares to perl 5/6
TimToady there may be special status for block components of feeds too 22:17
22:17 mkramer left
TimToady {...} ==> {...} ==> {...} considered akin to a Unix shell pipeline 22:17
lichtkind i would think so
TimToady esp with respect to not sharing innards easily 22:18
assumed async
and private
probably with a lexical barrier looking outward, in addition to the usual inward looking barrier
sorear is dubious of anything that requires the compiler to modify variable lookup semanticx
TimToady async itself might need such discipline 22:19
sorear runtime, I mean
TimToady "You used a lexical from outside this thread; please confirm." :)
otherwise we probably have to slap locks around shared lexicals 22:20
sorear uh, &infix:<+> is a shared lexical
and what about $GLOBAL::x? 22:21
22:21 whiteknight joined 22:23 mkramer joined 22:25 cipherte1t joined 22:27 ciphertext left
lichtkind TimToady: thank you for the thought so far i might write when ideas should appears some about that :) 22:27
i just liked the concept to make it ease to write code thay runs if something happens or make it simple to ask a slot if a value arrived 22:32
22:36 dual left, dorlamm joined, wolfman2000 joined 22:37 felliott joined 22:39 dual joined 22:40 masak joined
felliott sorear: I just tried your new flipflop test in p5 and got a different answer (xBCABC). 22:44
I think p5 is reusing the ff, too. 22:45
masak TimToady: re rosettacode.org/wiki/Pythagorean_triples#Perl_6 , I am happy to see you are also enjoying subs-in-subs and "passing" things through lexical scopes instead of as parameters. very Lisp-y, in a way. 22:47
22:47 am0c left
lichtkind listens to www.youtube.com/watch?v=ju1IMxGSuNE...ure=relmfu :) 22:48
felliott sorear: nevermind, didn't realize p5 had different sub scoping rules.
masak OTOH, every time I see complex numbers being used as 2-tuples (as opposed to being used for their properties as complex numbers), I sigh inwards and wonder if a dedicated tuple type would not be preferable. 22:51
22:53 whiteknight left, whiteknight joined 22:54 cognominal_ is now known as cognominal
dukeleto here are the slides from my talk about perl 6 modules yesterday : github.com/leto/presentations/blob...s/pres.pdf (click 'view raw' for the pdf) 22:55
pmichaud > say (+"1.2").WHAT 22:56
Rat()
> say (+'1').WHAT
Int()
masak pmichaud: \\\ooo///
pmichaud > say (+'1.25e4').WHAT
Num()
masak how I've waited! :D
pmichaud > say (+'0xff').WHAT 22:57
Int()
22:57 whiteknight left
dalek p: 134720b | pmichaud++ | src/ (2 files):
Add a few more useful option flags to nqp_radix opcode.
22:57
22:57 whiteknight joined
pmichaud now let's see how many spectests break :) 22:57
masak heh. :) 22:58
benabik All of them.
I meant none. Obviously.
pmichaud quite a lot, actually.
sorear What was the old semantics? 22:59
masak I've been trying out what it's like to practice does-based OO in Perl 6. so far: it's working surprisingly well. the only thing I miss being able to do is override methods. but it's usually not necessary.
pmichaud the spec semantics haven't changed... rakudo has never gotten it right
(until now :) 23:00
masak rakudo: say (+"42").WHAT
p6eval rakudo 1ddda5: OUTPUT«Num()␤»
sorear What were Rakudo's old semantics?
pmichaud ^^^^
masak sorear: see above.
sorear rakudo: say (+"1/2").perl
masak sorear: (always Num)
p6eval rakudo 1ddda5: OUTPUT«1␤»
pmichaud I think I'll go ahead and commit this fix and then others can help me fix the spectest breakages 23:01
23:01 Kivutarrr left
masak +1 23:03
pmichaud especially since I'll likely have to leave in a few minutes
I'm just verifying the build before pushing the commits.
(don't want to push a broken build :) 23:04
23:05 soh_cah_toa left
dalek kudo/nom: 3cf23af | pmichaud++ | / (3 files):
Update Str.Numeric to be a lot more correct. Numifying strings now

code is intended to handle the common cases; uncommon cases are likely to ultimately be handled by the compiler somehow.
23:08
pmichaud also:
> say +"1 and other stuff besides"
trailing characters after number
masak std: if 42 {} elsif {} 23:09
p6eval std 516268a: OUTPUT«===SORRY!===␤Expression needs parens to avoid gobbling block at /tmp/Lu6hwCU9bE line 1:␤------> if 42 {} elsif ⏏{}␤Missing block (apparently gobbled by expression) at /tmp/Lu6hwCU9bE line 1:␤------> if 42 {} elsif {}⏏[3…
masak pmichaud: nice!
pmichaud please feel free to start cleaning up spectests and/or reporting bugs. I'll be back in a couple of hours. 23:10
TimToady wow, the block was gobbled by the expression that isn't there :) 23:11
masak yeah :)
rakudo has the worse error, though:
rakudo: if 42 {} elsif {}
p6eval rakudo 1ddda5: OUTPUT«===SORRY!===␤Missing block at line 22, near ""␤»
masak that is, "missing block" right after the block :(
TimToady yes, STD used to produce that error too :) 23:12
but missing blocks have to be reanalyzed just like ttiar 23:13
std: if 42 {} elsif 43
p6eval std 516268a: OUTPUT«===SORRY!===␤Missing block at /tmp/hW3vi6nsuA line 1 (EOF):␤------> if 42 {} elsif 43⏏<EOL>␤Parse failed␤FAILED 00:01 118m␤»
TimToady but sometimes it's just a missing block...
sorear std: if 1 2 23:14
p6eval std 516268a: OUTPUT«===SORRY!===␤Missing block at /tmp/WpnMGSJfGY line 1:␤------> if 1 ⏏2␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤Parse failed␤FAILED 00:01 120m␤»
TimToady std: if 1{}
p6eval std 516268a: OUTPUT«===SORRY!===␤Missing block at /tmp/qqxdqCdS12 line 1 (EOF):␤------> if 1{}⏏<EOL>␤Parse failed␤FAILED 00:01 119m␤»
TimToady std: if 1{} else {} 23:15
p6eval std 516268a: OUTPUT«===SORRY!===␤Missing block at /tmp/dU505SmdBo line 1:␤------> if 1{} ⏏else {}␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤Parse failed␤FAILED 00:01 121m␤»
TimToady ah well
flussence just curious, if anyone knows: what's the correct way to write «perl Configure.pl --parrot-option=--ccflags="$CFLAGS -g"»? Everything I've tried mangles it. 23:16
23:21 zby_home_ left 23:22 soh_cah_toa joined 23:25 dorlamm left 23:28 whiteknight left 23:29 orafu left, orafu joined 23:32 bluescreen10 left
masak the adventure game, now at 944 LoC, is now playable from beginning to end. 23:34
I expect to write all the scene and object descriptions tomorrow, and make a few subsequent improvements to game "look and feel". 23:35
after that, it would be nice to get a number of volunteers to play the game and give a few comments about it.
felliott \o/ 23:36
I'll give it a try, masak.
masak++, that is.
masak yay
github.com/masak/crypt 23:37
due to the above, there are still lots of [Description of X] scattered everywhere. please disregard those.
I'll be especially interested in commands you tried and expected to work. 23:38
felliott you are eaten by a bug :) : gist.github.com/1083733 23:40
masak looks
felliott is this for nom or master? 23:41
masak master.
felliott good, that was master 23:42
masak felliott: all of those are reasonable and should work. I'll make sure they do in the "next release" -- sometime tomorrow.
thanks for the early feedback :)
ooh, and then there's an actual bug! :)
masak fixes that one immediately
felliott Also, I haven't played an adventure game in ~20 years, so my verb expectations may be off. 23:43
masak no, I think not.
fwiw, 'examine' and 'x' work for now.
felliott ah-ha! examine I shall. 23:44
masak felliott: pushed bug fix. 23:47
felliott gist.github.com/1083745
I took the rope, and ended up with the flashlight too?
pulling...
masak looks
huh. 23:48
felliott ah. there are two flashlights. 23:49
(just figured out "i")
masak yeah.
23:49 bluescreen10 joined
felliott one in inventory and one in the car. 23:49
masak pushed removal of that, too.
I used that for debugging.
sorry 'bout that :/
felliott No worries!
This game comes with an adventure and a meta-adventure. 23:50
masak ;)
felliott how do I examine the tiny disk?
x disk & x tiny disk don't work
masak good point -- will fix too.
though it's not supposed to be with you now. 23:51
23:51 jferrero left
dalek ecza: 49322b4 | sorear++ | lib/ (2 files):
Use primitives for the other three ++-like cases
23:53
ecza: 20310bc | sorear++ | / (2 files):
Implement flipflop operators
23:53 wolfman2000 left
dalek ast: f2fad85 | sorear++ | S03-operators/flip-flop.t:
[S03-operators/flip-flop] Simplify and fix scoping
23:54
23:55 Trashlord left
felliott sorear++ 23:56
flip-flop-fury! 23:57
masak: how many rooms are there? I made it to the chamber, but I'm stuck.
masak ooh, nice :)
there are six rooms: clearing, hill, chamber, hall, cave, crypt. 23:58