»ö« 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.
00:00 denisboyun left 00:05 berekuk left 00:07 sftp_ joined
psch goes to sleep 00:08
00:08 psch left, spider-mario left 00:09 sftp left 00:36 jeffreykegler joined 00:52 jeffreykegler left 01:00 berekuk joined 01:13 BenGoldberg joined 01:23 clsn joined 01:28 araujo joined
timotimo what to do now? 01:37
colomon 1. steal underwear 01:48
02:13 thou left
colomon preflex: tell rindolf gist.github.com/colomon/8379810 runs in 6.5 minutes under Niecza. Haven't gotten it to work under Rakudo yet. 02:24
preflex Consider it noted.
02:31 berekuk left 02:36 pecastro left 02:48 c1sung left 02:54 c1sung joined 03:49 atroxaper joined
[Coke] colomon: is fudging or fixing niecza on your radar? 04:06
colomon [Coke]: not today, certainly 04:07
in the next couple days, maybe
[Coke] just wondering. no pressures. 04:08
04:09 skids joined 04:18 preflex_ joined, ChanServ sets mode: +v preflex_, preflex left, preflex_ is now known as preflex 04:23 thou joined 05:26 eternaleye is now known as eternaleye_ 05:27 ssutch joined 05:37 wooden left 05:41 wooden joined 05:42 wooden left, wooden joined 06:09 xinming_ joined 06:11 xinming left 06:23 ssutch left 06:24 ssutch joined 06:33 BenGoldberg left 06:56 xinming joined 06:58 xinming_ left 06:59 hummeleBop joined 07:01 xinming_ joined, xinming left 07:14 xenoterracide left 07:51 grondilu joined 08:14 darutoko joined 08:15 thou left 08:16 SamuraiJack joined 08:22 thou joined
hoelzro morning #perl6! 08:41
raydiak \o morning 08:42
FROGGS morning
08:44 daniel-s joined
hoelzro so my spectest succeeded 08:44
\o\
/o/
FROGGS \o/ 08:45
hoelzro PR pending for both roast and rakudo
dalek kudo/nom: 2312829 | (Rob Hoelz)++ | src/core/Hash.pm:
Make :delete work with typed hashes
08:48
kudo/nom: 58307f7 | (Tobias Leich)++ | src/core/Hash.pm:
Merge pull request #234 from hoelzro/nom

Make :delete work with typed hashes
ast: 649a552 | (Rob Hoelz)++ | S09-typed-arrays/hashes.t:
Add test for :delete + typed hashes
ast: ce1f2e7 | (Tobias Leich)++ | S09-typed-arrays/hashes.t:
Merge pull request #34 from hoelzro/master

Add test for :delete + typed hashes
FROGGS hoelzro: can you check if the roast tests work on niecza/pugs?
(and fudge them otherwise?)
hoelzro FROGGS: sure, I can try 08:49
also, how do I leave a message for lizmat?
I figured she should have a look at my impl in case I did something wrong 08:50
FROGGS preflex: tell hoelzro This way 08:51
preflex Consider it noted.
hoelzro FROGGS: thanks! 08:52
preflex hoelzro: you have 1 new message. '/msg preflex messages' to read it.
hoelzro preflex: tell lizmat I fixed a bug with your typed hashes feature; would you mind looking it over?
preflex Consider it noted.
08:53 nebuchadnezzar left 08:55 nebuchadnezzar joined
hoelzro damn, building NQP-m is segfaulting =/ 08:55
08:56 skids left
hoelzro actually, FROGGS, I don't think I need to actually run niecza on it, since typed hashes aren't impl'd there 09:01
I just need to adjust the fudge number on line 62, right?
09:01 FROGGS[mobile] left, FROGGS[mobile] joined
hoelzro k, new PR for roast 09:06
hmm 09:16
sv->value ends up being NULL in compiler.c, line 400 09:17
dalek ast: c79bc98 | (Rob Hoelz)++ | S09-typed-arrays/hashes.t:
Update fudge number for typed hashes test
09:24
ast: 4c530a3 | (Tobias Leich)++ | S09-typed-arrays/hashes.t:
Merge pull request #35 from hoelzro/master

Update fudge number for typed hashes test
09:29 thou left 09:34 geekosaur left, geekosaur joined
masak antenoon, #perl6 09:44
FROGGS o/
hoelzro ahoy masak 09:49
09:54 dmol joined 09:56 rindolf joined
rindolf Hi all. 09:58
colomon: here?
hoelzro ahoy rindolf 10:01
rindolf hoelzro: meow.
10:04 SamuraiJack left 10:33 kivutar joined 10:50 SamuraiJack joined 10:51 Rotwang joined 10:53 Piers left, kivutar left, Piers joined 10:56 berekuk joined 10:57 denisboyun joined 11:02 atroxaper left 11:06 mberends joined 11:07 xinming joined 11:08 ingy left, wsri left, avuserow left, cibs left, mtj_- left, [Coke] left, mathw left, pmichaud left, Util left, masak left, breinbaas left, daniel-s left, preflex left, c1sung left, REPLeffect left, colomon left, yogan left, torbjorn left, simcop2387 left, dbrock left, go|dfish left, xfix left, bakedb left, Ulti left, rom1504 left, kivutar joined 11:09 xinming_ left 11:12 xinming_ joined 11:13 xinming left, ingy joined 11:14 wsri joined 11:17 xinming_ left, berekuk left 11:18 cianuro joined
cianuro buongiorno a tutti 11:19
11:23 xinming joined 11:33 cianuro left 11:47 daniel-s joined, preflex joined, c1sung joined, REPLeffect joined, colomon joined, yogan joined, torbjorn joined, simcop2387 joined, dbrock joined, go|dfish joined, xfix joined, bakedb joined, Ulti joined, rom1504 joined, dickson.freenode.net sets mode: +v preflex 11:51 avuserow joined, mtj_- joined, [Coke] joined, mathw joined, pmichaud joined, Util joined, masak joined, breinbaas joined
FROGGS[mobile] hi cianuro 11:57
11:59 spider-mario joined 12:00 spider-mario left 12:01 mohij joined 12:02 spider-mario joined 12:27 mtk left 12:30 mtk joined 12:33 mohij left 12:36 pecastro joined 12:41 araujo left 12:42 araujo joined, araujo left, araujo joined 12:54 psch joined
psch hi #perl6 12:54
timotimo o/ 12:55
12:56 kaare_ left 12:58 denisboyun left
timotimo what's on the menu for perl6 today? :3 13:06
rjbs Popcorn.
timotimo maybe i'll implement div to round towards -inf on parrot
13:16 mohij joined
psch how can i get locprepost from the optimizer? World has a method which takes a cursor, but afaict the optimizer doesn't have a cursor 13:20
timotimo that's the line of your code? 13:23
psch yeah, it should be
timotimo stuff from the cursor is mostly attached to the .node of the QAST nodes, but i'm not sure how exactly to get the line from that
psch for the eject symbol and all in X::Comp.gist
timotimo ah 13:24
moritz the match should be enough for that, no? 13:27
13:28 mohij left 13:29 mtk left
psch moritz: the match is attached to the past the optimizer gets? 13:29
moritz psch: yes
as $past.node 13:30
psch right, that's where i get .from and .orig for the line numbers 13:31
or rather, from the $op
as in, $op.node.orig etc
13:40 zakharyas joined 13:42 atroxaper joined
psch it works, thanks moritz 13:45
TimToady sitting at gate at sjc
psch i was wary of trying it like this because the cursor has .from instead of .pos, but seeing as it's used interchangeable in another spot and i adopted it from there, i probably should have just tried it 13:46
13:46 daniel-s left
TimToady lots of powered seats in the terminal, all without power :/ 13:46
boarding & 13:48
hoelzro does anyone have a good guide for P6 contexts for P5 programmers? 13:50
I'm having a rough time with this.
moritz hoelzro: with lists vs. items, or other kind of contexts? 13:53
hoelzro just list vs item atm
by other contexts, do you mean boolean vs numeric vs string?
13:53 FROGGS[mobile] left 13:54 FROGGS[mobile] joined
moritz yes 13:54
doc.perl6.org/language/containers is a start, but I realize know that it stops before getting to the really interesting bits
faq.perl6.org/#ref 13:55
13:56 mtk joined
hoelzro oh, I did not know about faq.perl6.org 13:57
moritz++
psch gist.github.com/peschwa/8377306 # still a few thinks amiss... 14:10
can it actually happen that the optimizer has to throw "undeclared routine"? seeing as the grammar does as well
similarly for "undeclared private method"
(also, the tests probably aren't exhaustive enough, and there's *still* a nominal type check failure...)
14:11 denis_boyun joined
moritz psch: the grammar can't catch all cases, because you can post-declare both subs and private methods in Perl 6 14:11
in fact, I don't even know which cases Grammar.pm could reasonably catch 14:12
psch oh, okay
r: class A { method doit() { self!really() } }; my A $a .= new; 14:16
camelia ( no output )
psch r: class A { method doit() { self!really() } }; my A $a .= new; $a.doit;
camelia rakudo-jvm 58307f: OUTPUT«No such private method '!really' for invocant of type 'A'␤␤»
..rakudo-parrot 58307f: OUTPUT«No such private method '!really' for invocant of type 'A'␤ in method doit at /tmp/xyFcu1Yzij:1␤ in block at /tmp/xyFcu1Yzij:1␤␤»
psch r: try EVAL 'class A { method doit() { self!really() } }; my A $a .= new; $a.doit;' $!.perl
camelia rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/y4cvvj_L5T␤Two terms in a row␤at /tmp/y4cvvj_L5T:1␤------> really() } }; my A $a .= new; $a.doit;' ⏏$!.perl␤ expecting any of:␤ postfix␤ infix stoppe…»
..rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/7I8AikkWAY␤Two terms in a row␤at /tmp/7I8AikkWAY:1␤------> really() } }; my A $a .= new; $a.doit;' ⏏$!.perl␤ expecting any of:␤ postfix␤ infix sto…»
psch r: try EVAL 'class A { method doit() { self!really() } }; my A $a .= new; $a.doit;'; $!.perl
camelia ( no output ) 14:17
FROGGS r: try EVAL 'class A { method doit() { self!really() } }; my A $a .= new; $a.doit;'; say $!.perl
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«X::Method::NotFound.new(method => "!really", typename => "A", private => Bool::True)␤»
psch ... right 14:18
FROGGS++ moritz++ timotimo++ jnthn++ masak++ # catching up 14:19
FROGGS :o)
diakopter rjbs++ # absurd but not that absurd
hoelzro hmm 14:21
I've got this code: for @cells -> $cell { $cell.value = Int }
is there a way to work a hyper operator in here?
like @cells<<.value = Int?
maybe @cells<<.value = map({ Int }, 1 ... Inf) 14:22
timotimo @cells>>.value will give you a list of lvalues 14:23
so @cells>>.value X= Int should work 14:24
r: my @cells = Pair.new xx 5; say @cells; @cells>>.value X= Int; say @cells; 14:26
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«Any => Mu Any => Mu Any => Mu Any => Mu Any => Mu␤Any => Mu Any => Mu Any => Mu Any => Mu Any => Mu␤»
timotimo hm.
14:29 raiph2 joined, raiph joined
timotimo hm, maybe a dbus binding for perl6 would be interesting 14:29
14:41 hummeleBop left
masak hoelzro: I'd just do `@cells = Int xx @cells;` 14:42
timotimo that doesn't seem like a translation of what rob had before to me 14:43
14:43 xinming left 14:44 xinming joined
hoelzro oh, that works too =) 14:44
14:44 FROGGS[mobile] left, FROGGS[mobile] joined
Rotwang will File::Temp be included in R* release in the future? 14:44
hoelzro oh, wait 14:45
I need to preserve the existing cell objects
FROGGS @cells>>.value.map({ $_ //= Int }) ?
hoelzro wouldn't that result in just getting the values? 14:46
14:47 johnmilton joined
FROGGS it assigns to it in the map 14:47
timotimo that is, if the value method is rw
hoelzro oh, because map aliases it? 14:48
FROGGS r: my @cells = Pair.new xx 5; say @cells; @cells>>.value.map({ $_ //= Int }); say @cells 14:49
camelia rakudo-jvm 58307f: OUTPUT«Any => Mu Any => Mu Any => Mu Any => Mu Any => Mu␤Nominal type check failed for parameter 'lhs'␤ in block at /tmp/metoJiY_Dd:1␤ in block at gen/jvm/CORE.setting:7346␤ in block at gen/jvm/CORE.setting:7210␤ in method gimme at gen/jvm/CORE.se…»
..rakudo-parrot 58307f: OUTPUT«Any => Mu Any => Mu Any => Mu Any => Mu Any => Mu␤Nominal type check failed for parameter 'lhs'; expected Any but got Mu instead␤ in sub METAOP_TEST_ASSIGN:<//> at gen/parrot/CORE.setting:16608␤ in block at /tmp/_2uZWfWe32:1␤␤»
14:56 beastd joined 14:58 atroxaper left 15:16 xenoterracide joined 15:17 cognominal left, cognominal joined 15:21 FROGGS[mobile] left, FROGGS[mobile] joined
jnthn Good UGT morning, #perl6 15:23
preflex jnthn: you have 1 new message. '/msg preflex messages' to read it.
moritz \o jnthn
clsn r: sub f(:a($b)) { say $b }; f(:a(1), :a(2)) 15:24
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«2␤»
clsn r: sub f(:a(:b($b))) { say $b }; f(:a(1), :b(2))
camelia rakudo-parrot 58307f: OUTPUT«Unexpected named parameter 'a' passed␤ in sub f at /tmp/MYIMfeMTcW:1␤ in block at /tmp/MYIMfeMTcW:1␤␤»
..rakudo-jvm 58307f: OUTPUT«Unexpected named parameter 'a' passed␤␤»
clsn hm. A little inconsistent. going to make truly matching Signatures near impossible. 15:25
moritz r: sub f(:$a) { say $a }; f :a(1), :a(2) 15:26
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«2␤»
moritz r: sub f(:a(:$b)) { say $b }; f :a(1), :b(2)
camelia rakudo-jvm 58307f: OUTPUT«Unexpected named parameter 'a' passed␤␤»
..rakudo-parrot 58307f: OUTPUT«Unexpected named parameter 'a' passed␤ in sub f at /tmp/HwmHrgIW4G:1␤ in block at /tmp/HwmHrgIW4G:1␤␤»
moritz r: sub f(:a(:$b)) { say $b }; say &f.signature.params[0].perl 15:27
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«:a(:b(:$b))␤»
arnsholt Should be f :a(:b(1)) no?
moritz r: sub f(:a(:$b)) { say $b }; say &f.signature.params[0]
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«:a(:b(:$b))␤»
moritz r: sub f(:a(:$b)) { say $b }; say &f.signature.params[0].named_names
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«b a␤»
jnthn Note that a Parameter object has a list of all names it can be matched by
ah, like moritz++ just shoved 15:28
moritz arnsholt: no, the sub f(:a(:$b)) { } syntax installs a and b as aliases
arnsholt Ah, right
moritz IMHO it's a bug that it complains about :a as unexpected named parameters
clsn yeah... but it can be matched multiple times by one of those names, but not by two of them.
arnsholt I thought it'd be destructuring
moritz r: sub f(:a(:$b)) { say $b }; f :a(1)
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«1␤»
15:28 SamuraiJack left
moritz r: sub f(:a(:$b)) { say $b }; f :a(1), :b(1) 15:28
camelia rakudo-jvm 58307f: OUTPUT«Unexpected named parameter 'a' passed␤␤»
..rakudo-parrot 58307f: OUTPUT«Unexpected named parameter 'a' passed␤ in sub f at /tmp/MIqs0Ev188:1␤ in block at /tmp/MIqs0Ev188:1␤␤»
jnthn arnsholt: No, you need subsignatures for that
arnsholt Right, right 15:29
In that case I guess it's a bug =)
moritz and the bug only occurs when both are present
jnthn moritz: So...which of the two values should it take?
moritz clsn++ # good find
clsn Same as when there's only one: the last one, I guess
Thanks.
moritz jnthn: it should be consistent with f :a<1>, :<2>
jnthn It current takes the first avialable name. I don't fancy making parameter binding slower...
moritz erm
jnthn: it should be consistent with f :a<1>, :a<2>
jnthn moritz: That makes things n**2, no? 15:30
moritz: Since parameter order != argument order, so we have to go through all the possible names and see which was passed first...
I'm not sure we actually preserve enough info to know which of the two nmaes came first on all backends. 15:31
moritz jnthn: I don't know enough about the binder to answer that
jnthn: but I'd expect there to be a hash from (alias) name to actual variable
jnthn Moar and probably do it. I dunno if JVM can. Parrot sure can't.
moritz so that when it sees :b in the argument list, it finds the parameter $a in O(1)
but again, that might be way too simplistic :-)
15:31 FROGGS[mobile] left 15:32 FROGGS[mobile] joined
clsn I need to send in some of these bugs I keep finding. 15:32
jnthn Well, trouble is 15:33
sub f(:a(:$b)) { }
f(:a(1), :b(2))
f(:b(1), :a(2))
oops
f(:b(21), :a(1))
gah, but anyway, I assume from the first calls you'd expect 2, and hte final one you'd expect 1 15:34
Which menas it's not just finding an a or a b
We bind parameters left to right
Not arguments left to right.
Has to be based on parameters or defaults don't work out.
clsn I mean, you kind of have yourself to blame if you pass both :a() and :b() if they're aliases to each other. It's sort of gigo. If you pass two and they're the same one, it's anyone's guess which you'll get. 15:35
jnthn Anyway, I think I'm happy with it being an error.
Because it's the conservative thing
15:35 daxim joined
jnthn If we decide to relax it in the future, we'll make something that didn't work before start working, not break something... 15:35
clsn going to make truly matching signatures nearly impossible. Have to compare all the lists of names to see which are subsets or overlaps with each other, etc. 15:36
Probably going to just have to do our best and fake it.
15:36 ajr joined
jnthn clsn: Yes, you might now be understanding why nobody seriously tackled signature smartmatch yet. :D There's lots of "fun" hiding... 15:36
masak jnthn! \o/ 15:37
15:37 ajr is now known as Guest41006
jnthn clsn++ # digging into the fun :) 15:37
o/ masak
15:37 Guest41006 is now known as ajr_
clsn Heh. Still, there's a lot to be improved without getting too bogged down. 15:37
jnthn aye
15:43 spider-mario left
Rotwang is there a destructor method in p6? 15:48
I need to clean up temporary dir when the class is garbage collected 15:49
object*
jnthn Rotwang: In theory, DESTROY. In practice, it's (a) not implemented, and (b) even if it was, makes very weak promises about when it'll be called 15:50
Rotwang: More typical Perl 6 way to handle such things is block exit handlers...
masak yeah, LEAVE is your friend. 15:52
sometimes in the guises of KEEP or UNDO.
how'd you respond to the jet lag?
15:53 gcole left
dalek kudo-star-daily: 65270bd | coke++ | log/ (5 files):
today (automated commit)
15:53
kudo-star-daily: 762a8a0 | coke++ | log/ (5 files):
today (automated commit)
rl6-roast-data: a0b8512 | coke++ | / (4 files):
today (automated commit)
15:54 gcole joined
jnthn masak: Just fine :) 15:54
Rotwang where can I read on those "block exit handlers"? 15:55
15:56 araujo left
masak Rotwang: S04 15:58
"Phasers"
perlcabal.org/syn/S04.html#Phasers 15:59
16:00 araujo joined
Rotwang thanks 16:00
dalek kudo/moar-support: aeda1bd | jonathan++ | src/vm/moar/ (2 files):
Implement p6getouterctx.
16:03
jnthn That starts unbusting the macro tests on Moar a bit
masak nice. 16:04
clsn r: <a b>.map({$_}) X, <c d>.map({$_}) 16:06
camelia ( no output )
clsn r: say <a b>.map({$_}) X, <c d>.map({$_})
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«␤»
clsn What am I missing here? Shouldn't that be the same as <a b> X, <c d>?
masak r: say (<a b>.map({$_}) X <c d>.map({$_}))
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«␤» 16:07
masak hm.
r: say (<a b> X <c d>)
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a c a d b c b d␤»
jnthn r: say <a b>.map({$_})
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a b␤»
clsn I was going to try to use stuff like that to check for subsetness among param names, but this cropped up.
r: say <a b>.perl; say <a b>.map({$_}).perl 16:08
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«("a", "b")␤("a", "b").list␤»
masak r: sub id { $^x }; say (<a b>.map(&id) X <c d>.map(&id))
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«␤»
masak submits rakudobug
r: say (<a b>.map({$_}) X <c d>) 16:09
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a c a d b c b d␤»
Rotwang r: 'class A { submethod BUILD() { say "build"; }; LEAVE { say "leave"; } }; A.new'
camelia ( no output )
masak interesting. so it takes two maps.
clsn r: say (<a b> X <c d>.map({$_}))
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«␤»
clsn No, only the second one it looks like.
masak oh! 16:10
yes.
clsn++
r: say (<a b> X <c d>.map({$_})).perl
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«().list␤»
clsn r: my @a=<a b>; my @b=<c d>.map({$_}); say $a X $b 16:11
camelia rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/zX45SymcaB␤Variable '$a' is not declared. Did you mean '@a'?␤at /tmp/zX45SymcaB:1␤------> @a=<a b>; my @b=<c d>.map({$_}); say $a⏏ X $b␤ expecting any of:␤ …»
..rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/eB2V1Wz0_T␤Variable '$a' is not declared. Did you mean '@a'?␤at /tmp/eB2V1Wz0_T:1␤------> @a=<a b>; my @b=<c d>.map({$_}); say $a⏏ X $b␤ expecting any of:␤ p…»
clsn r: my @a=<a b>; my @b=<c d>.map({$_}); say @a X @b
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a c a d b c b d␤»
clsn Hrm. Not sure that proves anything. 16:12
16:12 cibs joined
masak no, it doesn't, really. 16:13
maps have their own iterators, IIRC.
probably acting up when interacting with cross products for some reason. 16:14
jnthn Well, note that = is eager
uh, mostly eager
colomon r: say Num.WHAT 16:15
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«(Num)␤»
colomon r: say "{ Num.WHAT }" 16:16
camelia rakudo-jvm 58307f: OUTPUT«use of uninitialized value of type Num in string context␤␤»
..rakudo-parrot 58307f: OUTPUT«use of uninitialized value of type Num in string context in block at /tmp/3_dm5APrNM:1␤␤␤»
clsn Assigning to variables (probably items, though) seems to be a workaround.
jnthn colomon: string vs gist
moritz or .item 16:17
colomon jnthn: yes, but strikes me as weird here?
jnthn colomon: Not really
colomon: Interpolation is just .Str on anything and then concatenate
clsn No, it makes sense. Num.WHAT === Num, so you're essentially doing "{ Num }"
jnthn r: say Num.WHAT.gist
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«(Num)␤»
jnthn r: say Num.WHAT.Str
camelia rakudo-jvm 58307f: OUTPUT«use of uninitialized value of type Num in string context␤␤»
..rakudo-parrot 58307f: OUTPUT«use of uninitialized value of type Num in string context in block at /tmp/ZoeGbQcBD4:1␤␤␤»
colomon jnthn: I think the gist of my complaint is that variable interpolation uses .gist, but { } interpolation uses .Str. why is it different? 16:19
16:19 Rotwang left
jnthn colomon: Variable interpolation does, though? 16:21
r: my Num $x; say "$x"
camelia rakudo-jvm 58307f: OUTPUT«use of uninitialized value of type Num in string context␤␤»
..rakudo-parrot 58307f: OUTPUT«use of uninitialized value of type Num in string context in block at /tmp/WLXTHiFt8v:1␤␤␤»
colomon ah. well in that case, carry on. ;) 16:22
colomon was working on gist.github.com/colomon/8386731 which is his p6 version of news.ycombinator.com/item?id=7043943
16:25 wooden left
colomon jnthn: any hints on handling stack overflows in rakudo-jvm? I've tried -Xss2m and I'm still getting them. (different mini project) 16:26
16:27 Rotwang joined, ajr_ left
jnthn colomon: Well, I know there is some gather/take issue that can lead to such things 16:28
colomon I think the problem is in a giant X+ operation
colomon does not have a copy of the rakudo source open on his machine at the moment to check. 16:29
16:29 ajr_ joined
jnthn r: try { die 'x'; CATCH { default { gather { take 1 } } } }; say 'lived' 16:29
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«lived␤»
jnthn aha...
16:30 jeffreykegler joined 16:38 wooden joined 16:39 thou joined 16:47 atroxaper joined 16:52 rindolf left
Rotwang r: 'class A { submethod BUILD() { say "build"; }; LEAVE { say "leave"; } }; A.new' 16:57
camelia ( no output )
Rotwang on rakudo I get "leave" 16:58
what am I missing?
colomon r: class A { submethod BUILD() { say "build"; }; LEAVE { say "leave"; } }; A.new 16:59
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave␤» 17:00
Rotwang yeah, I've forgotern to remove the '
shouldn't it be: build␤leave␤ ? 17:01
colomon r: class A { submethod BUILD() { say "build"; }; }; A.new
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«build␤»
FROGGS r: sub foo($bar is copy $baz is copy) { } # LTA
camelia rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/kuU45cIgSn␤Missing block␤at /tmp/kuU45cIgSn:1␤------> sub foo($bar is copy ⏏$baz is copy) { } # LTA␤ expecting any of:␤ statement list␤ prefix or …»
..rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/XqqbMsaILt␤Missing block␤at /tmp/XqqbMsaILt:1␤------> sub foo($bar is copy ⏏$baz is copy) { } # LTA␤ expecting any of:␤ statement list␤ prefix or ter…»
FROGGS hmmm
r: sub foo(:$bar is copy :$baz is copy) { } # LTA
camelia rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/eUnkt33L5d␤Variable '$baz' is not declared␤at /tmp/eUnkt33L5d:1␤------> sub foo(:$bar is copy :$baz⏏ is copy) { } # LTA␤»
..rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/2tkYRwtCtU␤Variable '$baz' is not declared␤at /tmp/2tkYRwtCtU:1␤------> sub foo(:$bar is copy :$baz⏏ is copy) { } # LTA␤»
FROGGS right, this one
17:02 dayangkun left
Rotwang colomon: so am I using LEAVE wrong? 17:03
colomon Rotwang I don't know
Rotwang ok, any other ideas how to run code during the object deconstruction? 17:05
except for writing custom method "cleanup" and then calling it in the END block? 17:06
17:07 rindolf joined
araujo looks around 17:15
bit of an off topic question, but.... anyway knows a nice text editor , lightweight and with a gui tailored for writing essays ?
moritz Rotwang: not really; sadly DESTROY methods aren't implemented yet 17:16
17:16 dayangkun joined
Rotwang ok 17:17
17:18 _ilbot left, _ilbot joined, FROGGS[mobile] left, FROGGS[mobile] joined
clsn FROGGS: aren't you missing a comma in the above? 17:21
FROGGS clsn: correct, and the error message is not ideal
clsn Ah I see.
17:22 _ilbot left
rindolf Hi all. 17:24
17:26 _ilbot joined, SamuraiJack joined 17:28 gcole_ joined, _ilbot left 17:29 _ilbot joined 17:32 gcole left
grondilu Too bad rosetcode is down right now, there was an interesting algorithm task for computing pi that showed up today. Here's my translation of the ruby code: gist.github.com/grondilu/8387779 17:32
I couldn't figure how to make it more accurate in Perl 6. 17:33
The problem is that to get arbitrary precision we need to use FatRat, but then how do you compute the square root? I tried with a custom implementation but without much success. 17:34
17:36 BenGoldberg joined 17:38 LlamaRider joined, LlamaRider left 17:39 LlamaRider joined
masak Rotwang: I've never seen LEAVE used inside of 'class' like that. that's not what jnthn and I meant. 17:39
Rotwang: rather, LEAVE is for the scope where you declare the variable holding the thing you want to destruct.
17:40 LlamaRider left
Rotwang masak: aha, now I understand, but anyway, I think the example I gave shows some undesirable begaviuour? 17:40
17:41 mohij joined 17:42 colomon left 17:44 deyan_ joined, deyan_ left
masak not sure. not focused enough to think about it. 17:46
I didn't understand why the BUILD submethod didn't fire.
17:47 LLamaRider1 joined
moritz neither 17:47
17:50 locsmif joined, deyan_ joined, deyan_ left 17:53 foodoo joined
masak r: class C { submethod BUILD(:$f) { say "OH HAI" } }; C.new(:f(42)); say "bye!" 17:53
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«OH HAI␤bye!␤»
masak r: class C { submethod BUILD() { say "OH HAI" } }; C.new(:f(42)); say "bye!"
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«OH HAI␤bye!␤»
masak r: class C { submethod BUILD() { say "OH HAI" } }; C.new(); say "bye!"
17:53 skids joined
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«OH HAI␤bye!␤» 17:53
masak in this immortal words of GlitchMr:
the* 17:54
'...'
r: class C { submethod BUILD() { say "OH HAI" }; LEAVE { say "leave" } }; C.new(); say "bye!"
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave␤»
masak ok, so the LEAVE phaser incapacitates the BUILD submethod.
17:54 jeffreykegler left
masak now *that's* interesting. 17:54
r: class C { submethod BUILD(:$f) { say "OH HAI" }; LEAVE { say "leave" } }; C.new(:f(42)); say "bye!" 17:55
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave␤»
masak in fact, it seems to make the mainline never run.
r: class C { LEAVE { say "leave" } }; say "mainline"
camelia rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave␤»
masak which is still wrong, but makes a bit more sense, maybe.
17:55 jeffreykegler1 joined
masak Rotwang++ # doing something no-one had thought of trying before 17:56
17:56 atroxaper left
Rotwang no one had any need for a destructor? [; 17:56
moritz it's not the lack of need 17:57
17:57 LLamaRider1 left
moritz it needs some GC hooks, and you must be able to allocate new objects in such a hook 17:58
and at least parrot doesn't allow that
17:58 LLamalessRider joined
arnsholt And most GC algorithms don't guarantee order 17:59
moritz that wouldn't be so bad if we had a two-phase cleanup 18:00
call the DESTROY method of all objects being collected in one run
18:00 FROGGS[mobile] left, FROGGS[mobile] joined
moritz and only deallocate after all the methods in that batch have been called 18:00
masak sounds like a lovely idea.
18:02 Rotwang left 18:04 Rotwang joined
arnsholt Might be problematic if the destructors have to create objects though 18:04
masak ...accidentally? :) 18:06
oh, sorry, I read it as "have to concrete objects"
arnsholt: problematic because there might not be enough memory?
arnsholt Yeah
Or things being in this weird in-between state 18:07
jnthn Well, the typical approach is to have a finalizer queue
Any object thta has a DESTROY is additionally rooted in another array somewhere
And if the GC discovers that is the only way to reach it, then it makes it as live, but removes it from that array 18:08
Then the finalizer runs
Once and only once
18:12 FROGGS[mobile] left, FROGGS[mobile] joined
clsn Rakudo doesn't support typed positional slurpys, but it also doesn't really support typed named slurpys. Typing the named slurpy declares it to be Associative[Type], but the binder always just gives it a plain hash, which is Associative, so it never matches. 18:15
r: sub foo(Int *%_) { }; f(:b(7)) 18:16
camelia rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/hIQytmdBP8␤Undeclared routine:␤ f used at line 1␤␤»
..rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/oUxi2CI8Dz␤Undeclared routine:␤ f used at line 1␤␤»
clsn r: sub foo(Int *%_) { }; foo(:b(7))
camelia rakudo-parrot 58307f: OUTPUT«Nominal type check failed for parameter '%_'; expected Associative[Int] but got Hash instead␤ in sub foo at /tmp/ymYKerXxFg:1␤ in block at /tmp/ymYKerXxFg:1␤␤»
..rakudo-jvm 58307f: OUTPUT«Nominal type check failed for parameter '%_'␤␤»
18:26 kivutar left 18:27 LLamalessRider left 18:28 jeffreykegler1 is now known as jeffreykegler 18:32 LLamalessRider joined 18:33 LLamalessRider is now known as LLamaRider, FROGGS[mobile] left, FROGGS[mobile] joined
dalek ast: ed446b2 | coke++ | S06-signature/errors.t:
Add test for RT#76368
18:36
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=76368
18:44 FROGGS[mobile] left 18:45 jeffreykegler left 18:48 jeffreykegler joined
dalek ast: 951c516 | coke++ | S12-introspection/methods.t:
add test for RT # 76648
18:52
18:54 pecastro_ joined 18:56 pecastro left 18:57 darutoko left 19:00 sftp_ left 19:03 sftp joined 19:04 Piers left, Piers joined 19:05 araujo left, araujo joined 19:06 araujo left 19:07 araujo joined, araujo left, araujo joined, berekuk joined 19:11 spider-mario joined 19:12 pecastro joined 19:14 pecastro_ left 19:16 SamuraiJack left 19:18 raiph2 left 19:19 raiph left 19:37 mohij left 19:38 ilbot3 joined 19:40 ilbot3 left 19:43 foodoo left, ajr_ left 19:48 denis_boyun left, ilbot3 joined 19:50 kaare_ joined 19:56 ilbot3 left, ilbot3 joined 20:31 denisboyun joined 20:46 rindolf left 20:48 jeffreykegler left 20:55 ssutch left 21:02 dayangkun left 21:07 ilbot3 left 21:17 dayangkun joined 21:33 kivutar joined 21:34 raiph2 joined, raiph joined 21:35 Vlavv__ left 21:36 berekuk left 21:37 berekuk joined 21:40 zakharyas left, araujo left 21:51 Vlavv__ joined 21:59 pecastro left 22:06 pecastro joined 22:10 araujo joined 22:13 araujo left 22:25 Rotwang left 22:26 johnmilton left 22:28 nnunley joined 22:31 xinming_ joined, araujo joined 22:33 xinming left 22:36 xinming_ left, xinming joined 22:40 berekuk left 22:41 jeffreykegler joined, berekuk joined
dalek rl6-roast-data: 3e72f27 | coke++ | / (6 files):
today (automated commit)
22:43
FROGGS 96.66% 22:45
timotimo very good :)
FROGGS yeah
feels good
jnthn Getting there :)
FROGGS still much todo
diakopter FROGGS: only 3.34% todo 22:46
jnthn That was run before my 150 tests from exceptions/misc.t :)
I get we can do 97% tomorrow :)
diakopter jnthn: today is only just begun
timotimo awesome! :) 22:47
jnthn diakopter: Somewhere in the world... :)
s/get/bet/
timotimo will make parrot catch up a tiny bit, too
TODO passed: 16-19
TODO passed: 66-67, 70-71
jnthn :)
FROGGS cool!
timotimo hardly measurable, but people shall notice! :)
jnthn Did we regress some Parrot tests in MoarVM branch?
Would be good ot see how Parrot nad JVM work in moar-support compared to nom... 22:48
dalek p: 08d6968 | (Timo Paulssen)++ | src/vm/parrot/ (3 files):
implement floordiv for int and bigint on parrot
jnthn
.oO( Now it's implemented floorlessly... )
22:49 berekuk left
dalek kudo/nom: 828a8be | (Timo Paulssen)++ | / (2 files):
remove hacks for parrot's C-like div and bump NQP_REVISION
22:49
kudo/nom: eb1aa54 | (Timo Paulssen)++ | docs/ChangeLog:
mention div change in ChanegLog
timotimo jnthn: when you run parrot tests in moar-support, you get a bunch of aborted tests due to Hash.defined being used there
jnthn wtf... 22:50
timotimo MTE
22:52 jeffreykegler is now known as idiosyncrat 22:57 idiosyncrat left, jeffreykegler joined 23:00 berekuk joined
timotimo r: 5 % 0 23:01
camelia rakudo-jvm 58307f: OUTPUT«Divide by zero using infix:<%>␤ in block at gen/jvm/CORE.setting:901␤ in method bless at gen/jvm/CORE.setting:817␤␤»
..rakudo-parrot 58307f: OUTPUT«Divide by zero using infix:<%>␤ in method sink at gen/parrot/CORE.setting:12142␤ in method BUILDALL at gen/parrot/CORE.setting:904␤ in method bless at gen/parrot/CORE.setting:824␤ in method new at gen/parrot/CORE.setting:809␤ in method new…»
timotimo nqp: nqp::mod_i(5, 0) 23:02
camelia ( no output )
..nqp-moarvm: OUTPUT«(signal FPE)»
..nqp-jvm: OUTPUT«java.lang.ArithmeticException: / by zero␤ in (/tmp/KSoCVZcdtv:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/stage2/NQPHLL.nqp:1086)␤ in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292)␤ in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196)␤ in co…»
timotimo er, parrot?
nqp: say(nqp::mod_i(5, 0))
camelia nqp-moarvm: OUTPUT«(signal FPE)»
..nqp-parrot: OUTPUT«5␤»
..nqp-jvm: OUTPUT«java.lang.ArithmeticException: / by zero␤ in (/tmp/hFPQymjNta:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/stage2/NQPHLL.nqp:1086)␤ in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292)␤ in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196)␤ in co…»
timotimo is ... is that right?
23:03 colomon joined
timotimo "a modulo 0 is undefined in the majority of systems, although some do define it to be a." sayeth wikipedia 23:04
psch S03 looks like it should be undefined in perl6 23:06
seeing as it's defined via division
colomon grondilu: by coincidence, I posted a sqrt algorithm earlier today. It's trivial to convert to give you FatRats. gist.github.com/colomon/8386731
timotimo right. so it should throw an exception.
TimToady reminds me of the person who gave the lightning talk about how 'undef' was not sufficiently undefined in Perl 5, so he made a program poke random numbers into that location 23:07
grondilu colomon: it's not a coincidence. I did not bother mentioning this rosetta task, until I saw your post.
I'm not sure I understand how that would work with FatRat, though.
TimToady
.oO(slowly)
23:08
23:09 kaare_ left
lue wonders if my int8 $a = 0xFF; $a++; would result in $a == 0x00 or if it would blow up. 23:10
timotimo i think it should result in 0x00, personally
but that's the bit-banger in me speaking :P 23:11
FROGGS .oO( my int8 $a is overflowing; my int8 $b is blowing-up ) 23:12
grondilu finally understood how colomon's program work. Neat stuff.
lue timotimo: That's what I'd like too. I also don't think native types should be so closely managed by Perl 6, it's low-level after all :)
(which is another point against excepting) 23:13
timotimo in my mind, if you're using low-level "native" types, you're asking for low-level semantics in most cases
TimToady which are basically non-portable semantics, but that's 23:14
C-land
jnthn Well, there's also the "it's a pragma" option :)
TimToady a pragma might have no effect on one architecture, and cause it to run 10 times slower on a different architecture
not arguing against pragmas, but that's the kind of tradeoff 23:15
FROGGS .oO( use tradeoff )
TimToady the specs currently use pragmas to control what intermediate results are acceptable anyway
FROGGS and tradeon, obviously
TimToady afk & 23:16
FROGGS gnight &
lue use MONKEY_ANTICS for non-blowing-up native types, clearly
FROGGS o/
23:17 araujo left
lue would really appreciate it if rakudo's file path handlers could understand the magic of things like *, ~, or .. 23:18
23:19 beastd left
dalek ast: 812ff94 | (Timo Paulssen)++ | S03-operators/arith.t:
unfudge parrot negative div and mod tests
23:20
ast: 4c65527 | (Timo Paulssen)++ | S03-operators/adverbial-modifiers.t:
unfudge some rakudo multi colonpair syntax tests
23:26 logie_ left 23:30 araujo joined
colomon grondilu: sorry, you just need to change the my @approximations = 1, 23:31
to my @approximations = 1.FatRat,
and the number in converged to as tight as you'd like. 23:32
has-converged
23:33 locsmif left 23:35 araujo left
grondilu colomon: indeed. it's terribly slow, though. I guess the FatRat values quicly become very fat. 23:37
23:38 dmol left
grondilu (and much before convergence happens) 23:38
psch gnight #perl6 23:47
23:48 psch left 23:49 denisboyun left 23:55 spider-mario left
grondilu found a way not to use rationals 23:59
r: sub my-sqrt($n) { my $target = 10**16 * $n; .[*-1]/10**16 given 1, { ($_ + $target/$_)/2 } ... * == * }; say my-sqrt(2)
camelia rakudo-parrot eb1aa5: OUTPUT«1.4142135623731e-08␤»
..rakudo-jvm eb1aa5: OUTPUT«1.4142135623730952E-8␤»