»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
lue r: sub foo($a) { say $a.perl }; foo; foo(one(1,2,3)); # I would expect this to fail, because Junction !~~ Any . Is this just a WAT on my part? 05:51
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Calling 'foo' requires arguments␤ Expected: :(Any $a)␤at /tmp/tmpfile:1␤------> sub foo($a) { say $a.perl }; ⏏foo; foo(on…»
lue r: sub foo($a?) { say $a.perl }; foo; foo(one(1,2,3)); # I would expect this to fail, because Junction !~~ Any . Is this just a WAT on my part? 05:53
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«Any␤1␤2␤3␤»
lue Unlike normal declaration (my $a = Junction vs. my Any $a = Junction), this will work with sub foo(Any $a?) 05:59
Does seem to be a WAT on my part in any case. 06:00
TimToady r: sub foo($a?) { say $a }; foo; say foo(one(1,2,3)).perl; 06:03
yoleaux 28 Feb 2014 23:18Z <lue> TimToady: if I read the last section of S08 correctly (and correctly understand that \foo operates on a Parcel basis), does that mean \foo is considerable as a replacement for ¢foo ?
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«(Any)␤1␤2␤3␤one(Bool::True, Bool::True, Bool::True)␤»
TimToady it's just autothreading like it's supposed to
lue gets the idea the Junctions both are and aren't suitable to be specified as a type, as opposed to a more generic construct, which is strangely appropriate :P 06:04
TimToady: is there a way to say that you want to treat the junction as one object, instead of something to be autothreaded? The only thing I've found is "Junction $a", which sorta ruins the point of the example I was trying to construct. 06:06
TimToady well, you'd have to construct an object with a Junction attribute in order to treat one as an object 06:08
Junction is outside Any because it's a concept, not an object
Timbus r: sub foo($a?) { say $a.perl }; foo; foo(\one(1,2,3)); 06:10
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«Any␤Capture.new( list => (one(1, 2, 3),).list, hash => EnumMap.new())␤»
lue OK then. Guess that means my example will have to contend with a boring Mu type to demonstrate that parameters types are Any by default :/ 06:11
Guest14435 perl6: say [+] 1,2,3,4 06:37
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279, niecza v24-109-g48a8de3: OUTPUT«10␤» 06:38
Guest14435 perl6: say [*] 1,2,3,4 06:39
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279, niecza v24-109-g48a8de3: OUTPUT«24␤»
Guest14435 niecza: say (1,2,3,4) 􏿽xC2􏿽xC2􏿽xBB+«(6,7,8,9) 06:42
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Two terms in a row at /tmp/y_2Qdm_F26 line 1:␤------> say (1,2,3,4) ⏏»+«(6,7,8,9)␤␤Parse failed␤␤»
vincent22 perl6: (1,2,3) »+« (4,5,6) 06:50
camelia ( no output )
vincent22 per6: (1,3,4) «+» (5,6,7) 06:51
TimToady you need a "say"
vincent22 perl6: say (1,2,3) »+« (4,5,6)
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279, niecza v24-109-g48a8de3: OUTPUT«5 7 9␤»
vincent22 per6: say (1,3,4) «+» (5,6,7)
TimToady: thank you! 06:52
per6: say (1,3,4) «+» (5,6,7) 06:53
TimToady yu need an 'l'
I need an 'o' :)
vincent22 perl6: say (1,2,3,4) »+« (4,5,6,1) 06:56
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279, niecza v24-109-g48a8de3: OUTPUT«5 7 9 5␤»
vincent22 perl6: say (1,2,3,4,5,6,7,8,9) »+« (4,5,6,1)
camelia rakudo-jvm c62279: OUTPUT«Lists on both side of non-dwimmy hyperop of infix:<+> are not of the same length␤left: 9 elements, right: 4 elements␤ in sub hyper at gen/jvm/CORE.setting:16736␤ in sub hyper at gen/jvm/CORE.setting:16727␤ in block at gen/jvm/CORE.setting:16716…»
..rakudo-parrot c62279: OUTPUT«Lists on both side of non-dwimmy hyperop of infix:<+> are not of the same length␤left: 9 elements, right: 4 elements␤ in sub hyper at gen/parrot/CORE.setting:16987␤ in sub hyper at gen/parrot/CORE.setting:16975␤ in block at gen/parrot/CORE.se…»
..rakudo-moar c62279: OUTPUT«Lists on both side of non-dwimmy hyperop of infix:<+> are not of the same length␤left: 9 elements, right: 4 elements␤ in sub hyper at src/gen/m-CORE.setting:16733␤ in sub hyper at src/gen/m-CORE.setting:16724␤ in block at src/gen/m-CORE.setting…»
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Ran off end of non-dwimmy right␤ at /home/p6eval/niecza/lib/CORE.setting line 1536 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3347 (ANON @ 34) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3353 (_hyper_posi…» 06:57
pragma- whoever drew that Camelia thing should be taken out back and shot. 07:51
that is all.
timotimo that doesn't sound like fun 09:27
masak unless you shoot them with squeaky mice. 09:51
moritz \o 09:54
pippo j: say 3,3,1...4; 09:55
camelia rakudo-jvm c62279: OUTPUT«Unable to deduce sequence␤ in method sink at gen/jvm/CORE.setting:12252␤ in block at gen/jvm/CORE.setting:16285␤ in block at gen/jvm/CORE.setting:7503␤ in block at gen/jvm/CORE.setting:7505␤ in method reify at gen/jvm/CORE.setting:7531␤ …»
pippo m: say 3,3,1...4;
camelia rakudo-moar c62279: OUTPUT«===SORRY!===␤Unable to deduce sequence␤»
pippo m: say (3,3,1...4) <<+>> 1; 09:57
camelia rakudo-moar c62279: OUTPUT«===SORRY!===␤Unable to deduce sequence␤»
pippo m: say 1; 09:58
camelia rakudo-moar c62279: OUTPUT«1␤»
timotimo how is 3,3,1...4 supposed to work? o_O 10:36
moritz not at all 10:41
colomon I tried running emmentaler on Moar overnight, it looks like it crashed (after quite a few tests) with the message "Invalid opcode executed (corrupt bytecode stream?) opcode 3584" 10:48
masak o.O 10:49
colomon hmmm, wonder if the crash is deterministic. 11:00
./smoker projects.json
===SORRY!===
Missing or wrong version of dependency 'lib/File/Find.pm'
:\
colomon so, pandabrew/bin/pandabrew rebootstrap fixed the "Missing or wrong…" problem above. 11:55
jnthn 3584 is not a valid opcode number, I'm fairly sure of that :)
colomon as nearly as I can figure, this means emmentaler somehow broke the p6 module library
ooo, it is repeatable, and the File::Find thing is partially explained. 12:00
==> Successfully installed File::Find
Invalid opcode executed (corrupt bytecode stream?) opcode 3584
jnthn colomon: Hmm. Can you reduce it to a smaller test case? 12:08
colomon hmmm
timotimo jnthn: what does today's tuit supply look like? :) 12:12
jnthn timotimo: Empty, 'fraid... 12:14
timotimo 'tis okay
jnthn I got done with my course writing workload, but have somebody here to visit for the weekend.
timotimo mi e seems somewhat shallow as well
jnthn So figure I should show them around rather than sit hacking all day :) 12:15
Just ran a spectest to enjoy seeing less S05 fail on r-m though :)
TimToady++
colomon jnthn: shorter way of duplicating the bug: try installing File::Find using panda (on MoarVM) 12:19
jnthn colomon: I gotta head out soon, but try gist.github.com/jnthn/9289075 which could tell us the previus op, which may give a hint. 12:26
timotimo set a breakpoint to that line and find out when it happens, then time-traveling-debug it? 12:31
could set a breakpoint to whatever the previous opcode is, count how often it gets hit, then "c" over that breakpoint the known number of times - 1 and then turn on recording?
jnthn Sometimes printf is just less work :P 12:32
timotimo :)
colomon hurm, how do I get rakudo to rebuild with that change installed? 12:33
timotimo make m-clean
make -j4 m-install
but you don't need to rebuild
jnthn You don't
Just build a latest Moar and make install it to the same place and run
No need to rebuild nqp or Rakudo for most Moar changes
colomon ah, I did make but not make install 12:34
timotimo that's right (and makes me happy)
colomon ==> Successfully installed File::Find 12:37
colomon Invalid opcode executed (corrupt bytecode stream?) opcode 3584, prev 139 12:37
timotimo invoke_o? 12:43
timotimo colomon: can you make panda output the command it invokes? 12:47
and then invoke "moar --dump" with whatever .moarvm file it tries to run?
jnthn Hm, I wonder what it's invoking... 12:48
Gotta head out now, anyways... 12:49
colomon is completely lost in the panda source 12:51
oooo, maybe.... 12:53
"rm_rf" 12:56
so… unlink?
oh, hold on 12:57
colomon I'll bet it's actually find (from File::Find) 12:57
timotimo if you're in gdb, you can print a traceback with a helper function of moarvm 12:59
colomon not in gdb
I'm just adding "say" all over the panda / shell::command code
timotimo hah :) 13:00
colomon okay, hypothetically it could be map, sort, or reverse, but I'm betting it is find. 13:02
this is the line: for find(dir => $path).map({ .Str }).sort.reverse
and it never gets to the first iteration of the for loop
colomon this sounds kind of weird, but my impression is what is happening is the new File::Find panda compiles (incorrectly?) somehow overrides the File::Find which panda is already using. 13:16
don't really know how to prove that, and I've got $work to do and a five-year-old badgering me to play Lego Star Wars. 13:17
timotimo :D
FROGGS dalek is still not here :/ 14:05
FROGGS this is the point where I need to think about open issues left todo in the "eleven" branches 14:12
I guess doing wrapper for installed scripts for windows would be nice to have 14:13
s/doing/doing the/
Mouq Shouldn't this be <&test()> or something? github.com/perl6/roast/blob/master...kets.t#L46 15:06
p6: my $pass = 0; my sub test (Int $a = 1) {$pass += $a}; '3.14' ~~ /3 <&test()>/; say $pass 15:07
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse expression in metachar:sym<assert>; couldn't find final '>' ␤at /tmp/tmpfile:1␤------> = 1) {$pass += $a}; '3.14' ~~ /3 <…»
..niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Nominal type check failed in binding '$a' in 'test'; got Cursor, needed Int␤ at /tmp/tmpfile line 0 (test @ 1) ␤ at /tmp/tmpfile line 1 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3119 (Regex.ACCEPTS @ 10) …»
Mouq p6: my $pass = 0; my sub test (Cursor $c, Int $a = 1) {$pass += $a; $c}; '3.14' ~~ /3 <&test()>/; say $pass
camelia niecza v24-109-g48a8de3: OUTPUT«1␤»
..rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse expression in metachar:sym<assert>; couldn't find final '>' ␤at /tmp/tmpfile:1␤------> ) {$pass += $a; $c}; '3.14' ~~ /3 <…»
Mouq p6: my $pass = 0; my sub test (Cursor $c, Int $a = 1) {$pass += $a; $c}; '3.14' ~~ /3 <&test>/; say $pass 15:08
camelia niecza v24-109-g48a8de3: OUTPUT«1␤»
..rakudo-moar c62279: OUTPUT«P6opaque: no such attribute '$!pos'␤ in method ACCEPTS at src/gen/m-CORE.setting:12593␤ in method ACCEPTS at src/gen/m-CORE.setting:784␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot c62279: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 139569 (src/gen/p-CORE.setting.pir:59493) (gen/parrot/CORE.setting:10965)␤called from Sub 'Bool' pc 451655 (src/gen/p-CORE.setting.pir:187711) (gen/parrot/CORE.setting:12300)␤cal…»
..rakudo-jvm c62279: OUTPUT«java.lang.RuntimeException: No such attribute '$!pos' for this object␤ in method ACCEPTS at gen/jvm/CORE.setting:12595␤ in method ACCEPTS at gen/jvm/CORE.setting:784␤ in block at /tmp/tmpfile:1␤␤»
Mouq o.O
Well, good job niecza. I'm pretty sure those are faulty tests
Mouq (Though I'm not certain enough to change them. Someone who feels more confident that they are definitely wrong may) 15:10
r: my $name = 'alpha'; say 'abcdef' ~~ /<::($name)>/ 15:11
camelia rakudo-jvm c62279: OUTPUT«===SORRY!===␤Cannot stringify this␤»
..rakudo-moar c62279: OUTPUT«===SORRY!===␤cannot stringify this␤»
..rakudo-parrot c62279: OUTPUT«No such method 'QAST::Var<-3372209812372949685>' for invocant of type 'Cursor'␤ in regex at /tmp/tmpfile:1␤ in method ACCEPTS at gen/parrot/CORE.setting:12616␤ in method ACCEPTS at gen/parrot/CORE.setting:780␤ in block at /tmp/tmpfile:1␤␤»
FROGGS The first character after the identifier determines the treatment of the rest of the text before the closing angle. The underlying semantics is that of a function or method call, so if the first character is a left parenthesis, it really is a call to either a method or function: 15:30
<foo('bar')>
Mouq: ^^
but I'd propose to use the & sigil when a sub is meant... calling are sub or method with the same statement feels a bit weird 15:31
hmmm, but it is supposed to take locally delared regexes into account... 15:36
Mouq FROGGS: Yeah, I don't know how that works 15:47
r: my regex foo { abcd }; /<foo>/
camelia ( no output )
Mouq r: my regex foo { abcd }; /<&foo>/ 15:48
camelia ( no output )
Mouq r: my regex foo { abcd }; 'abcd' ~~ /<foo>/
camelia ( no output )
Mouq r: my regex foo { abcd }; 'abcd' ~~ /<&foo>/ 15:49
camelia ( no output )
masak cool tip: put an action class inside a method, and use closure semantics to refer to variables in the method outside of the action class. 16:10
jnthn pro tip: the methods are *not* cloned, they live in the method table ot he class. So never, ever do this if you plan to write multi-threaded code :P 16:11
*of the
(put another way: you ain't getting closure semantics there.)
masak hrm. 16:14
r: class C { method foo { my $x = 0; my class D { method bar { $x++ } }; D.new.bar; say $x } }; C.new.foo for ^2 16:15
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«1␤1␤»
masak jnthn: I fail to see the bit in the above that would blow up with multi-threading.
could you spell it out for me?
(but no, realistically, I don't ever expect to multi-thread this parsing code) 16:16
jnthn masak: Sure. Thread A enters foo. The class block is captured, and so the methods also are. You call D.new.bar. While it's running, thread B enters. It captures the class and methods. Now your action methods will all be seeing thread B's $x. 16:17
There's only one method table. The code objects in it can't point to two outers.
masak the second invocation of foo overwrites the OUTER of the lexpad of the first? 16:18
is there any way to demo that with camelia? maybe with reentrancy instead of multi-threadiness? 16:19
jnthn Well, you can create it with our too I suspect.
arnsholt o/ 16:21
jnthn perl6: sub foo($n) { my $y = $n; class A { method m() { say $y } }; foo($n - 1) if $n; A.m }; foo(1) 16:22
camelia niecza v24-109-g48a8de3: OUTPUT«(Any)␤(Any)␤»
..rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«0␤0␤»
jnthn masak: There's a reentrancy based appraoch
o/ arnsholt
masak perl6: sub foo($n) { my $y = $n; my class A { method m() { say $y } }; foo($n - 1) if $n; A.m }; foo(1) 16:25
camelia niecza v24-109-g48a8de3: OUTPUT«(Any)␤(Any)␤»
..rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«0␤0␤»
jnthn The "my" there is just talking about where the symbol A gets installed. 16:26
masak jnthn++
yes, I see it now.
for reentrancy, at least ;)
jnthn You don't get this in JavaScript 'cus you are building a new method table every time in the constructor. ;-)
Of course, that just gives you other issues. :)
masak r: sub foo($n) { my $y = $n; my class A { method m() { say "inside $y" } }; foo($n - 1) if $n; A.m; say "outside $y" }; foo(1)
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«inside 0␤outside 0␤inside 0␤outside 1␤»
masak jnthn: indeed. 16:27
moritz today I used Perl 6 to educate a die-hard OO programmer about closures
masak \o/
arnsholt Cool!
jnthn Today I used Perl 6 to educate a die-hard closures programmer about OO :D
arnsholt Did he see the light, in the end?
moritz gist.github.com/moritz/9292385 is the example I used 16:29
turns out the combination of dir() and IO::Path makes it *very* convenient to write file-recursing code
masak 's a nice example. moritz++ 16:30
moritz it worked on the very first try, without having to worry about concatenating paths, exluding . and .. etc.
masak it's nice because $counter "threads into" the execution of &walk, coroutine-style.
LLamaRider \o/ MoarVM with Panda works great, even my crummy P6 module works well on it 16:47
tadzik++
tadzik :) 16:48
glad to hear that
LLamaRider moritz: nice speedup upgrade would be to recurse all subdirs in parallel (if you don't care about the counter that is) 16:53
moritz LLamaRider: that was totally not the purpose :-) 16:54
LLamaRider moritz: I just randomly thought of what else would be nice to add in there :) Looks cool in any case. 16:58
moritz so, what primitives would one use? a supply into which several async blocks feed? 16:59
timotimo you can just put a whole bunch of start { } blocks and awaits 17:00
start each sub directory, await the result of them all
moritz but I want to call the callback as soon as a result is available 17:01
timotimo oh
good point i guess
the supply doesn't do any synchronisation, so you'd probably want to use a channel instead 17:02
LLamaRider you can just not wait for them to return, just let each subdir do its own thing and print from the callback. If you don't care about getting the list back, that's most efficient.
moritz timotimo: but the channel blocks on read, no?
LLamaRider: but I use an unsafe operation ($counter++) in the callback
LLamaRider: so I need some form of synchronization
timotimo since the channel would cause the stuff to get serialised
moritz first I should rewrite it as non-recursive 17:03
because then I use an arrays as queue 17:05
timotimo ah
timotimo so that's what you mean, yeah 17:05
now i get it :)
timotimo well, supplies call the subscribed methods immediately after .more-ing a value 17:07
so that may indeed be a good target for a callback; though it could run multiple at the same time if you have multiple threads traversing the directories 17:08
jnthn If you have many threads producing results that a single consumer should nom, then a Channel is the right thing. 17:09
timotimo yay, i said a right! :)
jnthn Or even one thread producing and another consuming concurrently.
timotimo if the callback is very cheap, it may not even be worth it 17:10
moritz I don't want to parellize the callback, but the directory reading
timotimo rakudo is kind of still far away from getting I/O bottlenecked when traversing directory trees :) 17:11
LLamaRider Hm, was just invited to give a Perl talk to a bunch of undergrads in the Computer Science club at my uni. They have a series of talks on languages they've used in internships and such. Thinking if I present something it should be Perl 6. 17:16
Any recommendations for punch-packed materials that would grab the short attention spans of hipster undergrads? :> 17:17
moritz \o/ it seems to work 17:20
timotimo moritz: soon on moar, too :3 17:23
moritz gist.github.com/moritz/9293475 that's the parallel version 17:24
and it seems to run quite fast, though when it's done it seems to hang forever 17:25
maybe when it awaits all those promises 17:26
LLamaRider moritz++ thanks for indulging me :> Which backend are you using?
arnsholt Does Panda working on Moar mean that NativeCall on Moar is close to the to the top of the list of blockers for a Moar star?
timotimo it's quite cool that you can for $dirs.list outside and $dirs.send inside
moritz LLamaRider: I developed the serial version on moar, but parallel stuff only works on the JVM atm
timotimo moritz: i think you want to close the $files
otherwise the $reader won't finish, will it? 17:27
moritz oh
and I have to close $dirs too
but when? 17:28
OH NOEZ 17:29
timotimo after @file-readers perhaps? 17:30
oh, hm.
yeah, that's not really that easy :P 17:31
moritz I fear the whole thing must be written differently 17:32
timotimo there's not really a way to signalize it's all finished, aye. 17:33
jnthn Channels do have a "completed" mechanism.
If you are doing it that way.
dinner &
timotimo yes, but the code the way it is right now isn't really easily changable for a single point to signalize the channel is finished 17:34
LLamaRider question: isn't having to end blocks with " 1; }; " a code smell ? 17:35
I'm used to doing this in P5's eval{} blocks, but always thought it's a potential sign of bad design. 17:36
moritz LLamaRider: it probably is; I'm simply not yet used to the new sink context rules 17:38
moritz oh, I think I know what I can do 17:40
moritz I can .poll the $dirs channel 17:40
moritz and if .poll doesn't return anything, I can check if all the @file-readers are done, and if yes, call $dirs.close 17:44
mhasch hi #perl6! Quick question:
How do I tell the Configure.pl script in rakudo-star where my icu-config is located ?
moritz mhasch: you extend PATH to make icu-config available in it 17:45
moritz gist.github.com/moritz/9293475 # this one seems to work 17:50
186s in serial, 130s in parallel 17:51
moritz for a full rakudo git repo, including a checkout of roast, nqp, moar and parrot 17:52
18805 files
moritz .poll often doesn't return any elements; doing something more sensible than 'next;' in there would be beneficial 17:54
moritz feels he's doing something RONG
moritz I have a list of promises, and want to wait until at least one of them is done 18:00
how do I do that?
winner seems to be the way to do it
but I can't seem to make heads nor tails out of it
vendethiel wants to change that name
(I don't think it really make sense) 18:01
moritz winner * { ... } what does that do? 18:02
vendethiel > nk 18:06
> so any(@files X~ '.' X~ @extensions) Xeqv @best | @good
does | flatten ?
let's find out! 18:13
r: say 1 == (1, 2) | (3, 4)
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«any(False, False)␤»
vendethiel not that way!
moritz r: say ((1, 2)| (3, 4)).perl 18:14
vendethiel r: say 1 == [|] (1, 2) (3, 4)
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«any($(1, 2), $(3, 4))␤»
rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> say 1 == [|] (1, 2) ⏏(3, 4)␤ expecting any of:␤ postfix␤ …»
vendethiel r: say 1 == [|] (1, 2), (3, 4)
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«any(True, False, False, False)␤»
vendethiel r: say so 1 == [|] (1, 2), (3, 4) 18:14
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«True␤»
vendethiel isn't it kinda inefficient, though :(
moritz seems it does flatten
vendethiel not really
well, not as I meant it, it doesn't generate junctions inside the lists 18:15
colomon vendethiel: did you want to get something like (1 | 2) | (3 | 4) out? 18:25
vendethiel colomon: yep. [|] did the job though :) 18:26
mhasch *sigh* miniparrot segfaults the first time it is called in a rakudo-star-2014.01 bootstrap. Are ther known issues I should be aware of? 18:28
arnsholt masak: I think you linked a page with an algorithm to efficiently select from a set according to a non-uniform distribution at some point. Do you happen to remember what page? 18:32
colomon arnsholt: isn't that what Bag.pick does?
arnsholt Hmm, probably 18:33
colomon I mean, I'm not sure it's the best algo, but it's somewhat functional 18:33
arnsholt Hmm, not the algorithm I'm looking for 18:34
colomon m: my $bag = ('red' => 1000000, 'blue' => 3).Bag; say $bag.pick(20)
camelia rakudo-moar c62279: OUTPUT«red red red red red red red red red red red red red red red red red red red red␤»
arnsholt I'm looking for the algorithm, though, not the Perl 6 implementation 18:35
If what I'm thinking of happens, I'll probably end up doing it in Python 18:37
Mouq r: multi a (Int $, |everything) { [+] everything.list }; multi a (Num $, |everything) { [*] everything.list }; say a(1,2,3,4,0); say a(1e1,2,3,4,0) 18:42
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«9␤0␤»
Mouq n: multi a (Int $, |everything) { [+] everything.list }; multi a (Num $, |everything) { [*] everything.list }; say a(1,2,3,4,0); say a(1e1,2,3,4,0)
camelia niecza v24-109-g48a8de3: OUTPUT«9␤0␤»
Mouq Hm. I had the impression |everything would get the first argument too 18:43
TimToady no, it's just a snapshot of the current remaining binding 18:45
maybe you want callsame 18:46
if we have the method form
r: sub foo(|) { &infix:[*].callsame }; say foo 3,4 18:48
Mouq TimToady: The set operators use the type of the first element to deterimine if they should act in a Setty or Baggy way. I was wondering if there was a way to check the type of the first argument of (**@p) while still putting everything in @p
camelia rakudo-moar c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ &infix:<Whatever<139646339443584>> used at line 1␤␤»
..rakudo-jvm c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ &infix:<Whatever<1362387953>> used at line 1␤␤»
..rakudo-parrot c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared name:␤ &infix:<Whatever<6306859678214230833>> used at line 1␤␤»
TimToady r: sub foo(|) { &infix:<*>.callsame }; say foo 3,4
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«No such method 'callsame' for invocant of type 'Sub+{<anon>}+{Precedence}'␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
TimToady nope
nor do we understand &prefix:<[*]> yet, I think 18:49
Mouq We definitely don't understand &prefix:<[*]> yet
TimToady just woke up after sleeping 11 hours, obviously it was my antibiotics that were giving me insomnia
why do I feel like I've been taken out and shot? 18:50
r: multi a (|everything, Int $) { [+] everything.list }; multi a (|everything, Num $) { [*] everything.list }; say a(1,2,3,4,0); say a(1e1,2,3,4,0) 18:52
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Cannot put required parameter after variadic parameters␤at /tmp/tmpfile:1␤------> multi a (|everything, Int $⏏) { [+] everyth…»
TimToady that's supposed to be possible
TimToady since | is supposed to snapshot the curent binding 18:52
S06:1238 18:53
synopsebot Link: perlcabal.org/syn/S06.html#line_1238
Mouq n: multi a (|everything, Int $) { [+] everything.list }; multi a (|everything, Num $) { [*] everything.list }; say a(1,2,3,4,0); say a(1e1,2,3,4,0) 18:54
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Cannot call &a; none of these signatures match:␤ Int, *@_, *%_␤ Num, *@_, *%_␤ at /tmp/2gBzLGWHtR line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) ␤ at /home/p6eval/niecza/lib…»
TimToady | is not, in that sense, a variadic parameter, because from the standpoint of the binding, it's supposed to consume 0 args, not all of them. 18:55
From an implementation standpoint, of course, this is problematic, because you don't want to clone the rest of the capture for |
| needs to be fast when it's the final thing
Mouq n: multi a (|everything, |also_everything) { say everything; say also_everything }; a(1,2,3,:abcd) 18:56
camelia niecza v24-109-g48a8de3: OUTPUT«\(1, 2, 3, |{"abcd" => Bool::True})␤\()␤»
Mouq r: multi a (|everything, |also_everything) { say everything; say also_everything }; a(1,2,3,:abcd)
camelia rakudo-parrot c62279: OUTPUT«1 2 3 "abcd" => Bool::True␤1 2 3 "abcd" => Bool::True␤»
..rakudo-jvm c62279: OUTPUT«This representation can not unbox to a native str␤ in block at gen/jvm/CORE.setting:6741␤ in method gist at gen/jvm/CORE.setting:6737␤ in method gist at gen/jvm/CORE.setting:1039␤ in sub say at gen/jvm/CORE.setting:13126␤ in sub a at /tmp/tm…»
..rakudo-moar c62279: OUTPUT«This representation (VMIter) cannot unbox to a native string␤ in block at src/gen/m-CORE.setting:6741␤ in method gist at src/gen/m-CORE.setting:6737␤ in method gist at src/gen/m-CORE.setting:1039␤ in sub say at src/gen/m-CORE.setting:13124␤ …»
Mouq :O parrot++
FROGGS arnsholt: yes, I think NativeCall and at least one precomp bug are the blockers of r-m* 18:59
TimToady is the binder treating the capture as mutable when it binds args? that is, is | assuming that it can eat all the remaining args?
Mouq has no clue how the binder works 19:00
TimToady too
TimToady should, given his role of designer 19:01
TimToady actually decided to start to delve into the guts last year some time, not just a week ago :) 19:02
TimToady languages designers often spec things that are impossible to implement efficiently :) 19:02
FROGGS TimToady: well, you know both sides :o) 19:03
mhasch impossible is a strong word
TimToady I was told 14 years ago that I was to stay away from the implementation because they already knew how I implement things, and wanted to do it differently :) 19:04
moritz some of the requirements of p6 are also strong words :-)
TimToady I've been thinking it was time to relax my mostly self-imposed exile there :)
colomon +1
;)
moritz TimToady: when I have a list of promises, how can I wait for the first to finish? 19:05
TimToady it wasn't really so much that they didn't want me to introduce Joe Code to their implementation, but also I didn't want to show favoritism to one effort
await @promises[0]
moritz I meant "first" in the temporal sense, not in the array-index sense 19:06
TimToady ah
you want, like, the "winner" :)
moritz TimToady: that's what I thought too, but I couldn't figure out the correct 'winner' invocation 19:07
TimToady that's why I respecced it to take a list in the opening clause, rather than relying on the cases to enumerate them 19:08
so winner @promises {...} is supposedd to do what you want
moritz what's the '...'?
FROGGS IIRC "winner" is like "given" 19:10
TimToady done * {...}
moritz I tried leaving the block empty, but that gave me a Nominal type check failed for parameter '&block' from somewhere within the 'winner' impl
FROGGS so it is winner/done like given/when?
TimToady though you should also be able to do winner * { done @promises {...}}, by spec
I see the arg after winner isn't specced well
moritz wouldn't that wait for all @promises
TimToady "winner" 19:11
this isn't a marathon where you wait for everyone to finish
with this race, you shoot everyone who didn't come in first
or are you really interested in a marathon? 19:12
moritz no, the Channel handles the marathon for me :-)
TimToady winner is for when you really are interested only in the first result
moritz I'm trying to improve gist.github.com/moritz/9293475/#fi...nd-pl6-L29 19:13
moritz though it feels the whole thing is rather hacky, and there should be a much simpler solution 19:13
TimToady I try to stay out of implementation... :P 19:14
moritz ftr, the "the whole thing" I meant my script, not the rakudo-j implementations :-)
s/the/with/
TimToady a walker would seem to want all the results, not the first one 19:15
moritz well, I get all of them by calling .poll until the channel is empty 19:17
TimToady yeah, that algo seems a bit introspecty, which is a smell
moritz the problem is, I can't use $dirs.list, because then I don't know when to .close $dirs
TimToady but my brane is not awake enough to supply a replement algo yet
*place
TimToady ok, let's just implement timely destuction...oh wait... 19:18
TimToady well, where timely means DESTROY called from the GC, but we don't have that either 19:20
seems we need a way to tell a lazy list "I'm done reading from you" 19:21
so throw away all your gathers and such 19:22
TimToady we have shutdown semantics on channels, but not lazy lists 19:24
perigrin
.oO(lazy lists are channels from beyond!)
TimToady I wonder how inefficiently I can spec shutdown on lists 19:25
TimToady and whether we've just invented a new scope, list generator scope 19:26
perigrin prefers mint scope.
TimToady too 19:27
perigrin list generator scope tastes too much like listerine for me. 19:27
TimToady they've got mint listerine now though :)
I'm running on Listerinux Mint right now
TimToady ah, don't get me started free associating when I've just woke up! 19:28
perigrin hehe
I'll charge for the associations then.
problem solved.
TimToady otoh, that's how I just saw the major hole in our lists 19:29
which might be what the Haskellers call a "space leak"
perigrin I'm pretty sure a space leak is what happens when I try to read expositions on Haskell 19:30
pmurias rurban_: do you plan to resume development of parrot (I have noticed that you have recently started committing to it's repo and you want to encourage a parroty GSoC project)
TimToady Now how am I supposed to backlog when you folks keep frontlogging? 19:32
FROGGS TimToady: you just have to wait for the night in europe :o) 19:33
lue irclog.perlgeek.de should do, unless you hit refresh a bunch :)
TimToady but then it's Too Late!!!
and there's no one to enjoy all my witty remarks, as well as the ones I just think are witty 19:34
FROGGS we just keep quiet for a few minutes then :o)
TimToady just don't say anything interesting :) 19:35
FROGGS ohh, I can do that :o)
TimToady ETOOINTERESTING 19:36
"Unable to deduce sequence" is LTA
mhasch is still fighting Configure.pl. Why would a script with that name touch the hierarchy given as --prefix ? 19:37
TimToady because, alas, it's using the stuff there to calculate dependencies instead of having make do it
feel free to fix our build system :) 19:38
mhasch Hm. I am still trying to understand the build process and will happily suggest improvements after. 19:45
TimToady I'm not sure who is most cognizant of build design at this point... 19:46
mhasch Seems best to not specify a prefix. Which means, the binaries will get installed in /path/where/i/unwrapped/the/tarball/install . 19:47
Mouq mhasch: If it means anything, I always use --prefix=/usr/local
mhasch Mouq: /opt/perl6 for me, but same general idea. 19:48
lue Haven't done a parrot-only build in a while, but when I used to do that it defaulted to /usr/local all the way up to rakudo. I'm still not entirely happy that I have to specify /usr/local for moar (and thus nqp and rakudo too) 19:52
mhasch What beats me is that make test complains about NQP being too old, which should have been built only minutes before. 19:53
lue did Configure complain about it being too old? 19:54
mhasch Configure was happy (and populated the prefixed hierarchy with all sorts of stuff 19:56
Mouq mhasch: What exactly is your Configure line?
mhasch perl Configure.pl --gen-nqp --gen-parrot --parrot-option=--icuheaders=/usr/include/x86_64-linux-gnu --parrot-option="--icushared=`icu-config --ldflags`" --prefix=/opt/perl6 19:57
lue mhasch: by the way, I've never experienced the "Configure populates the prefix" thing you're talking about (or else I'd have to do sudo Configure.pl)
TimToady I think we're taling about --gen things here, which do put stuff into the prefix dir 19:59
*talking
mhasch lue, TimToady: that's what I figured
lue Good thing I don't use the --gen stuff then :) 20:00
TimToady so if you regen those things by hand, you really need to be careful to say 'make install' rather than just make
TimToady there should be some top-level make option that make installs all those things underneath, but I don't think we're there yet 20:01
mhasch I think I'll wipe everything clean and start over. While experimenting with icu flags there might have been leftovers from a previous run somewhere. 20:02
TimToady if you want your gen things to track HEAD, you have to do that all by hand currently, or re-Configure at the top
Mouq --gen-nqp=master 20:03
lue or just maintain distinct repos, which is what I do :)
TimToady the current build system assume you are just a user of the -gen things, not a developer
lue: which is another way of doing it by hand :P
Mouq lue: But maintaining distinct repos is mostly useful if you do lots of development
TimToady it's still sitting outside the purview of 'make' 20:04
Mouq lue: Actually, redact my last statement as being non-helpful here
TimToady
.oO(good thing these guys aren't talking about anything interesting... :)
20:05
Mouq r: 'a | b' ~~ /([<.before \S | \h <![\h|]> > $<pod_string_char>=\N]+) +% [ \h\h+ | \h+ '|' \h+ ]/;say $/; 20:06
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«「a | b」␤ 0 => 「a」␤ pod_string_char => 「a」␤ 0 => 「| b」␤ pod_string_char => 「|」␤ pod_string_char => 「 」␤ pod_string_char => 「b」␤␤»
Mouq Ohhh 20:07
Debugging is so much harder in NQP ;_;
r: 'a | b' ~~ /([<.before \S | \h <![\h|]> > $<pod_string_char>=\N]+) +% [ \h+ ['|' \h+]? ]/;say $/; 20:09
camelia rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: OUTPUT«「a | b」␤ 0 => 「a」␤ pod_string_char => 「a」␤ 0 => 「b」␤ pod_string_char => 「b」␤␤»
Mouq \o/
TimToady mind you, I distracted myownself by deLTAifying the Unable to deduce sequence
ESTILLNODALEK 20:16
TimToady Don't you just hate it when there's just enough lag that the page doesn't update immediately, and then it updates while you're blinking, and it takes you far too long to realize that it did, in fact, update the screen? 20:19
mhasch must be a pretty dull page then 20:20
TimToady oh for the days when a screen update took longer than a blink :)
well, irc varies in that respect 20:21
mhasch \o/ finally, it worked. /me did manage to install perl6 20:23
TimToady \o/ too 20:25
colomon \/ 20:27
\o/
colomon needs to repair or replace his MBP keyboard before he loses his head permanently.
TimToady can only imagine that failure mode... 20:29
mhasch Next time, I will not run Configure.pl a second time without cleaning up first.
TimToady yeah, that's a gotcha
Configure and make are having a few marital difficulties 20:30
mhasch I wonder what Stuart Feldman would make of this... :-) 20:33
TimToady I think Stu would either say "Why aren't you using make for that?" or "Why *are* you using make for that?" 20:37
Using the right tool for the job can go wrong two different ways. :) 20:38
TimToady did someone tweak SET_CAPS lately? I'm getting a cannot find method 20:45
nevermind, it helps to keep track of your closing curlies when working in the setting 20:57
for anyone searching for this, I left out a curly, so the definition of my exception tried to eat the rest of the setting 20:59
timotimo that's the problem when you allow classes to be declared inside other classes :P 21:00
TimToady "Welcome to my Parlor class," said the Spider class to the Fly class. 21:04
geekosaur clever spider: augment class Spider... 21:08
er, clever fly
timotimo is unsure what to do next 21:15
TimToady is unsure what I did last 21:20
s/I/he/
Mouq Heh: 21:21
perl6 -e'=begin table␤this makes | me␤very | sad␤=end table␤say $=pod[0].contents 21:22
"sad this makes me"
But that's much better than before 21:23
(pod-table branch, haven't pushed)
vendethiel yeah, yoda-style is better than no style :-)
Mouq s/contents/content
timotimo Mouq: i have no idea how you come up with these interesting failure cases :) 21:26
but anyway, i'm very glad that you're pushing this forward
especially since i've been letting it rot for so long ;)
timotimo i'm also glad that TimToady++ is working on hyper nodality and stuff 21:42
TimToady is working on stuff today 21:52
timotimo that's fine 22:05
timotimo has been working on nothing today 22:07
TimToady just awsomized Unable to deduce sequence
instead of backlogging :)
> ./perl6 -e 'say 3,3,1 ... *' 22:08
===SORRY!===
Unable to deduce arithmetic or geometric sequence from 3,3,1 (or did you really mean '..'?)
timotimo maybe the person meant 3, 3, (1 ... *) :P 22:09
TimToady maybe they did at that :) 22:10
timotimo but it's a very good idea to put the actual numbers there
i have to do some thinking soon to get "code model" things into qt creator 22:11
i'd love to embed a moarvm into the creator to do analysis, or maybe have an analysis tool that can be long-running and you feed it chunks of files that have recently changed 22:12
i think it'll probably really be necessary to keep info on the currently open files cached so that we can refresh parts of the code rather than all of it
that seems pretty tricky
if i could build a very coarse segmentation of "the whole file" and have dependencies between them and quick methods to offset things around and resize them easily, maybe that'd be something 22:15
like "lines one through 50 is a class, in that class the first 10, second 10 and the rest are methods"
"this method refers to these symbols from outside"
raydiak anyone have a clue why my account is useless when logged in to RT? I don't seem to have permission for...anything (viewing bugs, accessing the homepage, etc) 22:17
I can't even get to my own bugs, or bugs I can view when not logged in
timotimo i think you have to be given a few permissions, for example by [Coke] 22:18
raydiak seems terribly unfriendly to have new accounts have lesser permissions than anonyumous guest
raydiak FROGGS: re RT #121319 until I get my rt account fixed so I can put this info in the right place, heres the repo you requested: github.com/raydiak/precomp-export-fail 22:21
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121319
raydiak FROGGS: also just FYI I downloaded the tarball from RT and double-checked that it works fine with gnu tar on linux (same thing I used to create it) and with 7zip on windows...mayhaps theres a problem on your end? 22:32
timotimo full hard drive? :P 22:34
raydiak heh
raydiak FTP in ascii mode? random line noise? NSA packet tampering? we may never know :) 22:37
timotimo sun storms 22:41
TimToady son sturms
Mouq r: [].shift 22:43
camelia rakudo-jvm 2209b7: OUTPUT«Unhandled exception: Element shifted from empty list␤ in throw (gen/jvm/CORE.setting:10834)␤ in sink (gen/jvm/CORE.setting:12256)␤ in MAIN (gen/jvm/main.nqp:47)␤ in (gen/jvm/main.nqp:41)␤ in (gen/jvm/main.nqp)␤␤» 22:44
..rakudo-moar 2209b7: OUTPUT«Unhandled exception: Element shifted from empty list␤ at src/gen/m-CORE.setting:10834 (/home/p6eval/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:129)␤ from src/gen/m-CORE.setting:12254 (/home/p6eval/rakudo-inst-1/languages/perl6/…»
..rakudo-parrot 2209b7: OUTPUT«Element shifted from empty list␤current instr.: 'throw' pc 414452 (src/gen/p-CORE.setting.pir:173722) (gen/parrot/CORE.setting:10854)␤called from Sub 'sink' pc 451607 (src/gen/p-CORE.setting.pir:187637) (gen/parrot/CORE.setting:12277)␤called from S…»
TimToady would be nice if we could consolidate those 22:45
timotimo you mean figure out it's the same exception and collapse them? 22:48
TimToady I mean (I think) make the tracebacks look more like each other 22:51
TimToady unless the user somehow indicates interest in vm-dependent details 22:51
of course, #if throws the line numbers off 22:52
or does it?
timotimo also the file names :)
TimToady those we can s/parrot/VM/ or some such 22:53
much like we did with the top-level with -e tmpfile
timotimo ah, hm.
lue except jvm puts its gen'd stuff in a different place than parrot or MVM
timotimo yeah, we'll have to consolidate those exact paths 22:54
otherwise p6: say $*VM is going to look funny :)
TimToady just sayin' 22:54
TimToady r: say 3,3,1...4 22:55
camelia rakudo-moar 2209b7: OUTPUT«===SORRY!===␤Unable to deduce arithmetic or geometric sequence from 3,3,1 (or did you really mean '..'?)␤»
..rakudo-jvm 2209b7: OUTPUT«Unable to deduce arithmetic or geometric sequence from 3,3,1 (or did you really mean '..'?)␤ in method sink at gen/jvm/CORE.setting:12256␤ in block at gen/jvm/CORE.setting:16289␤ in block at gen/jvm/CORE.setting:7503␤ in block at gen/jvm/CORE…»
..rakudo-parrot 2209b7: OUTPUT«Unable to deduce arithmetic or geometric sequence from 3,3,1 (or did you really mean '..'?)␤ in method sink at gen/parrot/CORE.setting:12277␤ in block at gen/parrot/CORE.setting:16537␤ in any coro at gen/parrot/CORE.setting:7543␤ in method r…»
TimToady .tell pippo see irclog.perlgeek.de/perl6/2014-03-01#i_8370406 which is for you :) 22:56
yoleaux TimToady: I'll pass your message to pippo.
TimToady maybe it should just replace those with <TRACEBACK> 22:57
lue
.oO( <camelia> rakudo-parrot c62279, rakudo-jvm c62279, rakudo-moar c62279: ERROR (use r!: if you really want to see error output )
23:02
timotimo timo for bed
lue timotimo o/
timotimo o/
TimToady Mouq: the & in <&test()> should not be necessary; it looks for a lexical of that name before it looks for a method
Mouq TimToady: So grammar Foo { method push { ... }; method TOP { <push()> } }; should call sub push? 23:04
TimToady but yes, it violates the need to return a cursor
if there is a sub push, or a 'my regex' or such 23:05
has to be a lexically scoped override, and has to return a cursor
'my regex' automatically does that
your method push there would also have to return a cursor 23:06
TimToady is still backlogging... 23:08
pippo TimToady: thank you very much for irclog.perlgeek.de/​perl6/2014-03-01#i_8370406 23:13
yoleaux 22:56Z <TimToady> pippo: see irclog.perlgeek.de/perl6/2014-03-01#i_8370406 which is for you :)
pippo :-)
TimToady vendethiel: note that in irclog.perlgeek.de/perl6/2014-03-01#i_8369338 it's the [op] reduce that's doing the flattening, not the | 23:15
vendethiel TimToady: I know, that's why I swapped to [] ;)
TimToady only list infix reducuctions refrain from flattening (well, and chain ops)
vendethiel is `so any` optimized ? or is it really just checking if any member is true and doing all the work for nothing ? 23:16
(like, is it a special case ?)
pippo I meant what timotimo said. I.e. 3,3,(1...10). But on my perl6-m I had a segfault trying to do "say (3,3,1...4) <<+>> 1;" 23:17
vendethiel because I know if it itsn't optimized I'll have to go with a loop; until then :(
TimToady some simple ones are optimized in 'if', but not sure if the so function does that
pippo so I tested Camelia to see if it had the same behaviour. 23:18
vendethiel when I check `so any(@a) ...` I really want it to stop at the first one that's True
no need to calculate all the following values
TimToady it only optmizes literals, I think
Mouq r: say so any True xx *
camelia rakudo-parrot 2209b7, rakudo-jvm 2209b7, rakudo-moar 2209b7: OUTPUT«True␤»
TimToady it probably only works right there because of the * 23:19
Mouq r: say so (any {rand.round} xx *)()
r: say so (any rand.round xx *)
vendethiel camelia ded :(
camelia rakudo-parrot 2209b7, rakudo-jvm 2209b7, rakudo-moar 2209b7: OUTPUT«(timeout)» 23:19
rakudo-parrot 2209b7, rakudo-jvm 2209b7, rakudo-moar 2209b7: OUTPUT«True␤»
TimToady r: say so any 1..10000 23:20
camelia rakudo-parrot 2209b7, rakudo-jvm 2209b7, rakudo-moar 2209b7: OUTPUT«True␤»
TimToady r: say so any 1..10000000
camelia rakudo-parrot 2209b7, rakudo-jvm 2209b7, rakudo-moar 2209b7: OUTPUT«(timeout)» 23:21
TimToady looks like it's only lazy on known infinites
which I would consider a bug
vendethiel isperl6fastyet.com
maybe in 5 years people will be saying "perl6doesntscale" instead of, err, "railsdoesntscale" 23:22
TimToady well, the design is, er, designed to scale in many ways
P6, that is
vendethiel good design is hard to get efficiently, though, I believe. 23:22
TimToady well, most languages become efficient by making the users worry about it :) 23:23
vendethiel languages aren't efficient, implementations are :p
TimToady well, most implementations become efficient by making the users worry about it :) 23:24
insofar as they only provide efficient primitives, and sweep the complexity under the carpet of the user
vendethiel (when is somebody coming to link SufficientlySmartCompiler ?) 23:25
TimToady right before we invoke Godwin's Law 23:26
.oO(Every day, in every way, we're getting better and better. --Hitler)
23:27
vendethiel (intelligent people saying intelligent things don't make them good people, though) 23:28
(and :; c2.com/cgi/wiki?SufficientlySmartCompiler - a bit late, though)