»ö« 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.
00:00 cognominal_ left 00:01 cognominal joined 00:03 kst joined 00:13 mikemol left 00:16 kst left 00:17 kst joined
masak people who write lexers: how much is the lexer allowed to carry state? 00:24
example: the issue of reserved words not being allowed after the dot in property lookup in JavaScript. seems that one could have been fixed by the lexer carrying enough state to figure out if it's after a dot or no. how kosher would such a solution be? 00:26
jnthn iirc, lex (as in, one half of lex and yacc) has states 00:27
masak ok.
jnthn And a token is parsed conditional on being in a state or something...
It's been some years... :P
masak as I see it, there's not a big leap from carrying such state to doing "contextual lexing", and re-inventing sublanguages within the lexer. 00:29
00:31 LucyintheSky joined, LucyintheSky left 00:35 spider-mario left
sorear masak! \o/ 00:36
masak sorear! \o/
sorear masak: it's quite traditional for lexers to do things they really shouldn't.
masak hehe.
sorear so don't feel too bad about it. 00:37
masak sorear: I'm asking because I'm designing a small language right now.
huf how is this different from *?
masak so all these things come up as things to consider.
huf :)
masak huf: I dunno. I try not to put so much crap into it. in some ways it's a small, clean version of Perl 6. 00:38
in other ways not.
00:38 MayDaniel left
huf i mean, "it's quite traditional for * to do things it really shouldnt" 00:38
that's basically a given
for any *
masak I'm still undecided on whether to separate lexing and parsing from each other. 00:39
huf masak: isnt nqp also a small clean version of p6?
masak it's more of a subset of p6 than my language.
huf ah, you'er more daring! 00:40
masak mine keeps some ideas of p6, and rejects others.
huf so a second second-system? :D
masak :)
also, it's not ready for public viewing yet, so I'll shut up and go back to designing it. :)
huf what's the worst that could happen? people will declare it dead before they know anything about it? :) 00:43
been done before ... :)
jnthn 'night o/ 00:44
masak 'night, jnthn.
I feel I'm slowly getting into the language implementation business, so this will be a nice first language to try to implement from scratch to completion.
also, I have another language I want to design, but I'm not ready for that yet. need to practice on this one ;) 00:45
huf your "slowly" is a bit puzzling 00:50
havent you been part of the core perl6 group for years now?
masak somehow I make a distinction between that work and holding all the strings myself. 00:52
in my opinion, anyone who touches Perl 6 is a Perl 6 language designer. most just don't realize that potential ;) 00:53
huf :)
01:07 kst left 01:09 kst joined 01:23 kst left, kst joined 01:31 Chillance left 01:32 Chillance joined 01:42 bowtie left
masak "If you are liberal in what you accept, others will utterly fail to be conservative in what they send." -- Eich's Law 01:47
geekosaur .oO { that would be one way to characterize the Eich, yes... } 01:48
masak 'night, #perl6 01:51
japhb o/ 01:52
01:54 PacoAir left 02:08 colomon left 02:16 kst left 02:19 kst joined
japhb It occurs to me that a program does not need to make liberal treatment *free*. An RPC server might choose to respond more quickly to strictly compliant clients, either by simply giving them priority queuing or artificially delaying response to non-compliant inputs. Paid services might even offer a discount or higher quotas for strictly compliant clients. 02:19
02:20 mikemol joined 02:21 pattayara joined, woosley joined 02:23 bapa left 02:24 pattayara left
sorear japhb: The USPS does that, sort of. 02:24
02:28 kst left, kst joined 02:32 dross joined
diakopter yeah, address handwriting that isn't machine legible is slowed down by needing human reading 02:42
ENONCOMPLIANTHANDWRITING 02:43
02:45 bapa joined
sorear but you get discounts on (bulk) mailing if you pre-barcode your mail so that nobody has to read it 02:49
02:52 dross left 02:58 sizz joined 03:02 orafu left, orafu joined 03:15 kst left 03:17 PerlJam left 03:18 PerlJam joined 03:19 kst joined, benabik left 03:31 telex left 03:32 telex joined 03:48 clkao_ joined 03:51 woosley left 03:58 benabik joined 03:59 orafu left, orafu joined 04:22 kst left
japhb sorear, Ah yes, a real world example, thank you. 04:22
diakopter, Oddly enough I once had a summer job reading scanned handwritten addresses and typing in the correct data to train banks of machines designed to automatically sort handwritten envelopes. 04:23
Thankfully the training envelopes were taken in batches from particular post offices, and I happened to own a programmable keyboard -- so I could program the keyboard to do the common forms for the last line of the addresses and save a BUNCH of typing. :-) 04:26
04:29 kst joined 04:38 wk joined 04:39 wk is now known as Guest5820, am0c left 04:42 colomon joined, Guest71136 left 04:44 kst left 04:51 lorn joined 04:59 kst joined 05:14 kst left 05:16 kst joined 05:22 telex left 05:30 kst left 05:32 telex joined 05:33 fgomez left 05:36 kst joined 05:46 Chillance left 05:54 fgomez joined 05:57 tokuhiro_ joined 06:01 tokuhiro_ left 06:03 jaldhar_ left 06:24 kaare_ joined
Timbus No such method 'candidates_matching' for invocant of type 'Method' <- err, jnthn, your black magic patch to my IRC module has stopped being so magical 06:40
$multi.candidates_matching($mod, $event)>>.($mod, $event); #this line here. 06:41
japhb Timbus, that method has been changed to can_do 06:47
Timbus excellent 06:48
japhb There's a relatively recent diff to src/core/Main.pm where you can see the change (from the point of view of a caller)
Timbus you lied to me D: 06:49
No such method 'can_do' for invocant of type 'Method'
is it to be called in some other way
japhb I'm sorry, no underscore, just cando ... and it wants a capture as it's argument. 06:50
my @matching_candidates = $m.cando(Capture.new(list => $p, hash => $n);
er ... ));
That's the line from src/core/Main.pm 06:51
Timbus ah
i really shouldnt be relying on this :/
japhb Timbus, well now instead of it being a speculative routine, it is now a spec'ed routine. :-) 06:52
Timbus oh good
japhb Ah, here it is: commit da339d2626 06:54
Timbus thanks a bunch! 06:57
japhb np 06:58
07:21 SamuraiJack joined 07:32 silug left 07:41 domidumont joined 07:58 domidumont left 08:00 domidumont joined 08:01 robinsmidsrod joined 08:10 tokuhiro_ joined 08:12 jaffa4 joined 08:13 tokuhiro_ left 08:14 tokuhiro_ joined, GlitchMr joined 08:19 tokuhiro_ left
jaffa4 hi 08:20
How would you call perl6 from perl 5?
diakopter like to do what 08:21
08:22 xinming_ left
jaffa4 calling perl 6 subs from perl 5 08:31
diakopter is it possible? 08:32
sorear can be done using blizkost callbacks if the top-level is perl 6 08:42
if you want to use a p5 top-level, it's needed to use one of the other implementations, maybe perlito's p5 backend
doesParrot::Embed still work?
08:51 fgomez left 08:52 tokuhiro_ joined 09:04 fgomez joined 09:06 arnsholt_ joined 09:32 rjt_ joined
rjt_ Greetings p6 09:33
sorear Hello rjt_. 09:37
betterwo1ld r: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha> ** $0 } 10:10
p6eval rakudo 2c6a52: OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 2, near " $0 }"␤»
betterwo1ld is there a way to make this work?
10:17 MayDaniel joined
sorear yes, use +% instead 10:18
wait, no 10:19
n: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha> ** {$0} }
p6eval niecza v22-19-gd874a8e: OUTPUT«Unhandled exception: Unable to resolve method niecza_quantifier_min in type Match␤ at /tmp/jGSQO9yygM line 1 (ANON @ 10) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2915 (Regex.ACCEPTS @ 10) ␤ at /tmp/jGSQO9yygM line 1 (mainline @ 3) ␤ at /home/p6ev…
sorear n: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha> ** {+$0} }
p6eval niecza v22-19-gd874a8e: OUTPUT«Match()␤»
sorear n: say '3 letters in foo' ~~ token { (<digit>+) " letters in " <alpha> ** {+$0} } 10:20
p6eval niecza v22-19-gd874a8e: OUTPUT«#<match from(0) to(16) text(3 letters in foo) pos([#<match from(0) to(1) text(3) pos([].list) named({"digit" => (#<match from(0) to(1) text(3) pos([].list) named({}.hash)>, ).list.item}.hash)>].list) named({"alpha" => (#<match from(13) to(14) text(f) pos([…
sorear hmm
oh, it's expecting whitespace between the letters because of the space arund the quantifier
n: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha>**{+$0} }
p6eval niecza v22-19-gd874a8e: OUTPUT«#<match from(0) to(16) text(3 letters in foo) pos([#<match from(0) to(1) text(3) pos([].list) named({"digit" => (#<match from(0) to(1) text(3) pos([].list) named({}.hash)>, ).list.item}.hash)>].list) named({"alpha" => (#<match from(13) to(14) text(f) pos([…
sorear \o/ 10:21
betterwo1ld, the original problem was lack of braces
betterwo1ld hm, ok thanks
still, i cannot seem to make it work in rakudo
sorear r: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha>**{+$0} } 10:22
p6eval rakudo 2c6a52: OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 2, near "{+$0} }"␤»
sorear I am not quite sure what's up here
b: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha>**{+$0} }
p6eval b 922500: OUTPUT«3 letters in foo␤»
sorear alpha: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha>**{+$0} }
seems you've found a nom regression 10:23
those are rare these days!
10:23 grondilu joined
betterwo1ld lucky me ;) 10:23
btw, rakudo does not mind the space around "**" 10:24
r: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha> ** 3 }
p6eval rakudo 2c6a52: OUTPUT«「3 letters in foo」␤ 0 => 「3」␤ digit => 「3」␤ alpha => 「f」␤ alpha => 「o」␤ alpha => 「o」␤␤»
Woodi hmm, point for angry perl6 peoples becouse of few rewrites :)
grondilu I try to set a integer with command line: my Int $n = @*ARGS[0] and I get a Type Check assignment error 10:25
Woodi morning everyone :)
sorear grondilu: @*ARGS[0] isn't an integer, it's a string
grondilu Isn't it supposed to do the conversion?
sorear No
Automatic conversion is only for arithmetic, not assignments 10:26
0 + @*ARGS[0] would convert
or do it explicitly: @*ARGS[0].Int
10:30 SamuraiJack left
betterwo1ld b: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha> ** $0 } 10:32
p6eval b 922500: OUTPUT«␤»
betterwo1ld b: say '3 letters in foo' ~~ rule { (<digit>+) "letters in" <alpha>**$0 } 10:34
p6eval b 922500: OUTPUT«␤»
10:42 spider-mario joined 10:44 isBEKaml joined 10:54 azawawi joined
azawawi hi 10:54
isBEKaml hello, azawawi 10:58
phenny isBEKaml: 08 Nov 15:34Z <[Coke]> tell isBEKaml that I'm using whatever is installed on feather.
isBEKaml phenny: tell [Coke] ok, nvm - I'm just about to give up on pugs+windows. :) 10:59
phenny isBEKaml: I'll pass that on when [Coke] is around.
11:04 birdwindupbird joined 11:13 erkan left 11:20 xinming joined 11:35 azawawi left 11:40 rindolf joined
rjt_ Hey, question about meta operator performance. Given: 11:41
sub postfix:<ɸ>(Int $a) {
([*] $a «%« (2,3,5,7)) ?? Nil !! $a;
}
say [+] (^1000)»ɸ; takes close to 10 seconds on my machine. 11:42
If I expand the body of the sub to ($a%2)*($a%3)*($a%5)*($a%7) ?? Nil !! $a; , it takes about 1/10th of that time.
Is that expected, am I doing something wrong, or is that in the list of performance things that still need improvement? 11:43
(Rakudo, fresh git pull)
masak the latter, I would guess. 11:44
rjt_ OK, that was my guess as well, but couldn't rule out programmer stupidity. :-) 11:45
11:47 snearch joined
masak no, it looks fine ;) 11:56
tadzik good morning #perl6 12:03
GlitchMr github.com/GlitchMr/glitchmr.githu...d429278f7e 12:06
I really should check file names next time
12:11 isBEKaml left 12:16 snearch left, snearch joined
rindolf tadzik: meow. 12:34
12:35 Psyche^ joined 12:37 isBEKaml joined 12:39 Patterner left, Psyche^ is now known as Patterner 12:45 erkan joined, erkan left, erkan joined
jnthn afternoon, #perl6 12:49
masak jnthn! \o/ 12:51
rindolf jnthn: hi. 12:53
12:55 jaldhar_ joined
masak std: 1_0; 1__0; 12:55
p6eval std 04216b1: OUTPUT«===SORRY!===␤Only isolated underscores are allowed inside numbers at /tmp/HrAxMEEv2L line 1:␤------> 1_0; 1⏏__0;␤Whitespace is required between alphanumeric tokens at /tmp/HrAxMEEv2L line 1:␤------> 1_0; 1⏏__0;␤…
masak rn: say 2e0.^name 12:59
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«Num␤»
13:01 tokuhiro_ left
grondilu S/quit 13:03
isBEKaml rn: say 1e100.^name; #lazy?
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«Num␤»
13:03 grondilu left
jnthn 1e100 is a literal 13:05
masak lazy how?
jnthn It literally has no work to do, lazy or otherwise, at runtime :)
masak right.
jnthn
.oO( see what I did there... )
isBEKaml too much beer makes bad puns. :P 13:07
Okay, I didn't think of it as a literal, but that it had to eval something before spitting output. Hence, the ^name; 13:08
masak jnthn: *groan*
13:08 jaldhar_ left
isBEKaml Running it under the perl6 repl, took some delay when I did 1e100.^name; but returned instantly for 2.^name; 13:10
jnthn isBEKaml: Hey, I didn't have any beer yet today :P
tadzik isBEKaml: the first expression in the REPL is always slower, did you note that?
isBEKaml tadzik: gah!
nwc10 jnthn: I have! :-)
jnthn Oh noes, I'm behind! :P 13:11
isBEKaml jnthn: so we see a slower jnthn? :D
nwc10 jnthn: then we ran out. At least of beer that I like
13:11 jaldhar_ joined
jnthn Ohnoes 13:11
nwc10 (this isn't my house. *I* have a strategic beer reserve now. Just in case.) 13:12
we're also onto the UHT milk here, so no more tea for me either...
jnthn has plenty of nice stuff to hand, including a limited edition treacle porter...
isBEKaml tadzik: that caught me out! Thanks for reminding me (might need that again, sometime) :) 13:13
nwc10 oooh, that sounds interesting
jnthn oak aged too ;)
nwc10 The landlord of The Gunmakers (in London) told me who makes porter in these parts, but I've forgotten where he said. (Pesky beer festival)
so I'm going to have to ask again, and *write it down*
isBEKaml hmm, we still have last; quitting the repl. :) 13:14
nwc10 Porter and cider seem to be the two obvious things that are hard to source.
tadzik I wonder how had would it be to write a non-parrot, user-levelish repl
bah, too many things I started doing and never finished
nwc10 (I have a strategic cider reserve too, but it will eventually run dry) 13:15
isBEKaml Hah! Too many things I had in mind, never committed to stuff.
nwc10 topic? What's that? :-) 13:16
jnthn isBEKaml: hah! Probably because the REPL sits in a while loop reading user input, the last is caught by the loop exception handler for that loop :D 13:17
isBEKaml jnthn: yeah, I know and I also remember quite a few of us surprised back when we brought in this repl. :)
masak nwc10: we don't really do the topic thing in here... 13:18
:)
(so don't worry)
jnthn isBEKaml: Well, I don't think the REPL implementation has changed much in a long while.
Aside from being ported from PIR to NQP at some point.
And even that didn't change the overall approach.
isBEKaml jnthn: speaking of nqp, how hard would it be write an nqp to jvm translator? 13:19
tadzik heh, grammars :)
jnthn isBEKaml: I've been looking at that a bit.
isBEKaml tadzik: well, that's only one from nqp side, right? I'm talking of direct bytecode translation to jvm.
tadzik ah 13:20
jnthn isBEKaml: It's fiddly in places.
Figuring out how to port 6model and have it efficient is one of the harder parts.
isBEKaml jnthn: Oh, I assume you're talking of the thing that was done with jasmin? 13:21
(before 6model came into force)
jnthn isBEKaml: No, just speaking more generally.
The C implementation of 6model used in Rakudo relies on being able to do something the JVM disallows.
(Passing around interior pointers)
Well, used in NQP too. 13:22
isBEKaml jnthn: I think we can work around that with JNI (No idea, have to check)
jnthn No, that's a bad answer.
Better to have the REPRs do runtime class generation.
isBEKaml jnthn: yeah, it can quickly get out of hand - too many fiddling quotients. 13:23
jnthn That way you work in terms of the primitives the JVM understands and knows how to optimize well.
isBEKaml jnthn: What do we use interior pointers for?
jnthn Any case where one representation is nested inside of another. 13:24
13:24 tokuhiro_ joined
jnthn Int is a P6opaque, but has a P6bigint nested inside of it, for example. 13:24
isBEKaml jnthn: hmm, in that case - like you said, we need to build direct representation on JVM side, using classes. But that leads to a large footprint, if we have too many nested levels.
jnthn: a case of class explosion. 13:25
jnthn isBEKaml: REPRs are orthogonal to the the type system, so you can do caching.
Also, P6opaque is allowed to re-order attributes within a class when it figures out the storage. 13:26
Which could get a higher hit rate.
masak nr: say 0e1 === -0e1 13:27
jnthn That is, a class Foo { has $!x; has $!y; has int $!z; } could potentially share generated class with a class Bar { has int $!a; has $!b; has $!c; }
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«True␤»
jnthn For classes with all object fields, the hit rate is even better.
13:28 tokuhiro_ left
isBEKaml hmm, doesn't that mean we have highly specific classes than more general ones. The only thing that comes to mind is Groovy's 22 param methods to represent tuples and Scala's Function0 to Function22. 13:29
(sorry, that first sentence was a question).
jnthn Well, all you're really doing is using JVM classes to mimic the memory layout computation done in C. 13:30
isBEKaml github.com/scala/scala/blob/master...on22.scala
jnthn omg 13:31
Yeah, I'm talking about generating these things *at bytecode level*, on demand.
Not hardcoding them up front. 13:32
isBEKaml jnthn: well, groovy had this sort of thing(not at bytecode level, but at source level) since they were supporting jdk1.4, which didn't have varargs(that came in jdk1.5) 13:33
jnthn Ah, I see.
But I'm not talking about argument passing here, just object layout. 13:34
isBEKaml jnthn: and scala, because jvm had certain limitations and they weren't using asm back in 2.7.x days. I'm fuzzy on this and I have to look around.
13:35 sunnavy joined, sunnavy left 13:36 sunnavy joined 13:38 pmurias joined
masak std: 01234 13:44
p6eval std 04216b1: OUTPUT«Potential difficulties:␤ Leading 0 does not indicate octal in Perl 6; please use 0o1234 if you mean that at /tmp/5SbhDyqBcu line 1:␤------> 01234⏏<EOL>␤ok 00:00 41m␤»
isBEKaml groovy had 250 param methods too. github.com/groovy/groovy-core/blob...yUtil.java 13:46
*has
jnthn: sorry, I was a bit misled - there's no real limit on the number of params, but that it had to be made available at runtime. So, dynamic generation at runtime might be something to try out. 13:48
masak .oO( where the heck are Perl 5 string literals detailed again? oh right, perldoc perlop ) 13:55
rn: say "\b".ord
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«8␤»
13:59 nyuszika7h left 14:08 bowtie joined 14:12 grondilu joined
pmurias isBEKaml: re porting nqp to jvm, I'm slowly porting nqp to javascript so nqp should be pluggable enough as it is now 14:14
grondilu rn: enum Suit <♦ ♣ ♥ ♠>; say ♠; 14:15
p6eval rakudo 2c6a52: OUTPUT«===SORRY!===␤Confused␤at /tmp/BQmSSaLISz:1␤»
..niecza v22-19-gd874a8e: OUTPUT«===SORRY!===␤␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/vsZf1dR5ZQ line 1:␤------> enum Suit <♦ ♣ ♥ ♠>; say⏏ ♠;␤␤Confused at /tmp/vsZf1dR5Z…
masak rn: enum Suit <♦ ♣ ♥ ♠>; say Suit::.keys 14:16
p6eval rakudo 2c6a52: OUTPUT«♦ ♣ ♥ ♠␤»
..niecza v22-19-gd874a8e: OUTPUT«0␤»
masak rn: enum Suit <♦ ♣ ♥ ♠>; say Suit::<♠>
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«♠␤»
jnthn r: say '♠' ~~ /<alpha>/
p6eval rakudo 2c6a52: OUTPUT«#<failed match>␤»
isBEKaml pmurias: oh, that's great - It's all up in the clouds right now for me. ;)
(for lack of time and quick-to-run-away motivation) 14:17
grondilu isn't rosettacode.org/wiki/Playing_cards#Perl_6 broken or something? 14:19
14:22 isBEKaml|2 joined
pmurias CATCH doesn't catch null pmc access? 14:23
14:24 isBEKaml left
jnthn Pretty sure it does 14:26
nqp: { nqp::null().foo(); CATCH { say('caught') } } 14:27
p6eval nqp: OUTPUT«caught␤»
14:28 nyuszika7h joined, PacoAir joined 14:39 isBEKaml|2 left 14:40 isBEKaml joined 14:43 isBEKaml|2 joined 14:44 isBEKaml|2 left
grondilu nr: class Foo { has Str $!bar; method gist { $!bar } }; say my Foo $x .= new: :bar("hi"); 14:44
p6eval rakudo 2c6a52: OUTPUT«use of uninitialized variable $v of type Str in string context in block at /tmp/__hzMcCreL:1␤␤␤»
..niecza v22-19-gd874a8e: OUTPUT«Potential difficulties:␤ $x is declared but not used at /tmp/dGcswWYIR1 line 1:␤------> ar; method gist { $!bar } }; say my Foo ⏏$x .= new: :bar("hi");␤␤␤»
14:45 brrt joined 14:47 isBEKaml left 14:48 araujo left 14:52 SamuraiJack joined
masak nr: sub hep(*@) { say "hep!" }; hep 1, 2, 3 14:53
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«hep!␤»
masak nr: sub hep(*@) { say "hep!" }; hep
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«hep!␤» 14:54
masak nr: sub hep(*@) { say "hep!" }; my $i = 5; hep while --$i
p6eval rakudo 2c6a52, niecza v22-19-gd874a8e: OUTPUT«hep!␤hep!␤hep!␤hep!␤»
GlitchMr perl6: my Array of Str %hash; %hash<a> = ["b"]; 14:57
p6eval rakudo 2c6a52: OUTPUT«Type check failed in assignment to '$v'; expected 'Array+{TypedArray}' but got 'Array'␤ in block at /tmp/91S41HGtpw:1␤␤»
..niecza v22-19-gd874a8e: OUTPUT«===SORRY!===␤␤Coercive declarations NYI at /tmp/oFkHPoh3io line 1:␤------> my Array of Str⏏ %hash; %hash<a> = ["b"];␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5)…
GlitchMr perl6: my Positional of Str %hash; %hash<a> = ["b"];
p6eval rakudo 2c6a52: OUTPUT«Type check failed in assignment to '$v'; expected 'Positional' but got 'Array'␤ in block at /tmp/LKZ2P_Hrik:1␤␤»
..niecza v22-19-gd874a8e: OUTPUT«===SORRY!===␤␤Coercive declarations NYI at /tmp/alkW2dlpQI line 1:␤------> my Positional of Str⏏ %hash; %hash<a> = ["b"];␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die…
masak associativity is specified per precedence level in S03. and yet we specify them per operator when defining operators. there's a "hang on the wrong hook" in there somewhere. 15:19
GlitchMr I still end using more parens in Perl 6 than in Perl 5... 15:20
15:22 snearch left, am0c joined
masak TimToady: S03:80: "(In standard Perl there are no unaries that can take advantage of associativity, since at each precedence level the standard operators are either consistently prefix or postfix.)" 15:25
TimToady: what about prefix:<++> and postfix:<++>?
std: my $a; ++$a++
p6eval std 04216b1: OUTPUT«===SORRY!===␤"++" and "++" are not associative at /tmp/BpSePrW0LZ line 1:␤------> my $a; ++$a++⏏<EOL>␤"++" and "++" are not associative at /tmp/BpSePrW0LZ line 1:␤------> my $a; ++$a++⏏<EOL>␤FAILED 00:00 42m␤»…
masak given that the "Autoincrement" level has "N" associativity, the above STD output looks right to me. 15:26
but the paragraph in S03 seems wrong.
oh, I see now that S03 addresses the case of differing associativity on the same precedence level. so that's OK, I guess. 15:27
15:36 spider-mario left 15:37 grondilu left 15:38 jkbbwr joined
jkbbwr Can someone here read kanji? 15:38
15:41 PacoAir left, PacoAir_ joined, jkbbwr left 15:43 leont joined
masak you mean hanzi? :P 15:44
oh, ey left.
15:47 blue_ joined 15:48 blue_ left, PacoAir_ left
pmurias jnthn: self can be a container in nqp? 15:52
jnthn: does it only happen when called from perl6 code?
15:56 PacoAir joined 15:59 Chillance joined 16:00 PacoAir left 16:02 PacoAir joined 16:03 PacoAir left, PacoAir joined 16:04 brrt left
jnthn pmurias: Yes 16:04
pmurias: Another option is to deal with it - as Rakudo does - when binding self, I guess. 16:05
That'd probably be better; not sure why it's not like that already.
16:05 PacoAir left 16:07 PacoAir joined 16:08 PacoAir left 16:09 PacoAir joined, cognominal left 16:22 cosimo_ joined 16:23 cosimo_ left 16:36 _jaldhar_ joined, jaldhar_ left 16:48 PacoAir left
cosimo hey! 16:51
tadzik hey hey
cosimo who's running the p6/std/niecza eval bots? 16:52
I'd like to know what was done to avoid things like system("rm -rf /") and such 16:53
p6eval: say system('whoami') 16:54
rakudo: say system('whoami')
p6eval rakudo 2c6a52: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&system' called (line 1)␤» 16:55
16:55 PacoAir joined
tadzik cosimo: github.com/rakudo/rakudo/blob/nom/...ED.setting 16:56
r: run "foo"
cosimo rakudo: say run('whoami')
p6eval rakudo 2c6a52: OUTPUT«run is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub run at src/RESTRICTED.setting:8␤ in block at /tmp/INOHx2vn81:1␤␤»
rakudo 2c6a52: OUTPUT«run is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub run at src/RESTRICTED.setting:8␤ in block at /tmp/taMuG9EpSS:1␤␤»
cosimo tadzik: how do I run in this restricted mode then? 16:57
tadzik cosimo: perl6 --setting=RESTRICTED I think
16:58 birdwindupbird left
cosimo tadzik: excellent 16:59
jnthn Beware - it's not particularly strong protection.
cosimo where are the actual eval bots running?
tadzik r: say CORE::run('whoami') 17:00
p6eval rakudo 2c6a52: OUTPUT«No such method 'Any' for invocant of type 'Str'␤ in at src/gen/BOOTSTRAP.pm:839␤ in any at src/gen/BOOTSTRAP.pm:836␤ in block at /tmp/WlmkCBDgOq:1␤␤»
tadzik whew :)
cosimo i mean, can I use these already running services with an API of some sort?
r: my $x = 'whoami' ;say CORE::run($x)
p6eval rakudo 2c6a52: OUTPUT«No such method 'Any' for invocant of type 'Str'␤ in at src/gen/BOOTSTRAP.pm:839␤ in any at src/gen/BOOTSTRAP.pm:836␤ in block at /tmp/gdRpiky0hl:1␤␤»
tadzik cosimo: they run on feather1 I think, and are accessible on the irc
you can /msg them 17:01
there's an IRC bot which puts your code in a file and runs it
with some restrictions
17:07 Moukeddar joined
masak Moukeddar! \o/ 17:07
Moukeddar hello there, i missed you :) 17:08
\o/
how are you doing ?
cosimo tadzik: do you know which bot is supposed to be running that? there's lots of stuff there
masak Moukeddar: I can only speak for myself. I'm doing well, thank you. :)
Moukeddar: hope you're doing well too. 17:09
Moukeddar things are looking up :D
tadzik cosimo: github.com/perl6/evalbot I think 17:11
masak rn: class Things { method looking-up { say self.^name ~ " are " ~ &?ROUTINE.name.subst("-", " ") } }; Things.looking-up
p6eval niecza v22-19-gd874a8e: OUTPUT«Things are Things.looking up␤» 17:12
..rakudo 2c6a52: OUTPUT«Things are looking up␤»
masak ooh, a discrepancy. 17:14
cosimo r: say "Cosimo is testing"; sleep 10; say "Test done"
p6eval rakudo 2c6a52: OUTPUT«Cosimo is testing␤Test done␤»
masak cosimo! \o/ 17:16
cosimo found :)
ideally, I could send an XHR request with some rakudo code to evaluate and I'd get back the result 17:21
...
17:21 am0c_ joined
tadzik cosimo: are you reinventing try.rakudo.org? :) 17:22
17:22 am0c left
tadzik (which doesn't function, I think) 17:22
cosimo tadzik: such a thing exists or not?
tadzik cosimo: code exists. Site did work
who had this on github, hm 17:23
github.com/moritz/try.rakudo.org 17:24
masak moritz++ # having things on github
folks, there's no one signed up for releasing Rakudo 2012-11-22! 17:25
I'll make a deal with you. someone take that date, and I'll take the 2012-12-20 date. how's that sound? 17:26
tadzik tuesday, eh? 17:27
I don't contribute enough recently, sign me up :) 17:28
jnthn 22nd is a Thursday
and, tadzik++
tadzik oh, thursday. That interferes with Thursday Beer
sign me up anyway :)
masak will do. 17:29
jnthn Thursday beer! That sounds good!
17:30 isBEKaml joined
dalek kudo/nom: cb07076 | masak++ | docs/release_guide.pod:
[docs/release_guide.pod] signed up tadzik and masak

For November and December compiler releases, respectively.
17:30
isBEKaml masak: 2012-12-20 -- special date, eh? :)
masak it is? 17:31
isBEKaml 2012 - (rev 2012)
sort of. :) 17:32
dd -MM - yyyy , reads like that. 20 - 12 - 2012
tadzik yeah
do the release on 20:12
masak oh, you international people with your non-ISO ymd orders... :) 17:33
isBEKaml 20-12-2012:20:12 UTC. done deal.
masak I could do that. 17:34
would probably fit quite well with my schedule, in fact.
isBEKaml masak++, tadzik++ ## release anchors. 17:37
17:39 am0c_ left, am0c joined
masak I'd love for someone to sign up for January, too. laugh those ancient Mayans in the face. 17:40
isBEKaml lol. We are an ancient race, don't ever predict our downfall! :) 17:41
isBEKaml meekly raises his hand 17:42
masak nice. shall I make the commit, or do you want to? 17:43
isBEKaml I haven't done anything, let me do something anyway.
I don't have a commitbit to rakudo.
masak hm, that may be... a tricky situation when doing a release. 17:44
17:44 am0c left, am0c joined
jnthn Only for uploading the tarball. 17:44
masak and stuff like pushing the announcement. 17:45
tadzik you can figure out the CLA stuff in those 2 months :)
jnthn The commits can be handled by doing it in a forked repo and sending a pull request. :)
masak jnthn: oh!
masak writes isBEKaml++ on the list
17:45 ranguard left
jnthn It's like git is distributed or something... :P 17:45
masak :D 17:46
dalek kudo/nom: 72a27fc | masak++ | docs/release_guide.pod:
[docs/release_guide.pod] signed up isBEKaml

For the January compiler release.
isBEKaml tadzik: the only things that stopped me from actively contributing to rakudo were lack of time and a bloody ancient machine.
tadzik: I can't say much about the first, but I got a newer, faster machine now. :) 17:47
masak isBEKaml: consider yourself actively challenged by the channel to become a contributor ;)
isBEKaml: if you want, I can help you hunt down low-hanging RT tickets to attack.
isBEKaml masak: part of the reason why I'm here :)
masak \o/
I mean, we've worked on Perl 6 compilers together before, right? :P
isBEKaml masak: yapsi, yeah. :) 17:48
masak good times.
isBEKaml (if you don't count something called proto)
masak not among compilers, no.
isBEKaml man, that feels so long ago.
masak :)
isBEKaml first, I got to get cygwin up in beating shape. I ain't so comfy with msvc. 17:49
pmurias jnthn: is there a way to get the type object from a how? 17:50
(not recreate it)
jnthn No
pmurias ok
jnthn Not unless the meta-object stores it explicitly or something, but it doesn't need it; the object we're operating on is always passed in as the first argument, and you can .WHAT that. 17:51
isBEKaml
.oO(I still hit C-u to undo all my typing in windows... hmm, force-of-habit )
masak isBEKaml: I sometimes do ^W in web forms, because I have that bound as "delete word" in both vim and Emacs. in browsers it means "close tab or window", though :/ 17:52
isBEKaml Maddingue: yeah, that too 17:53
d'oh, I hit ma<tab> and C-u, it underlined the rest of it!
masak: ^^
masak ;) 17:54
isBEKaml masak: I'm running emacs in cygwin, and notepad++ natively. Still miss vim, might as well put it up. 17:55
17:58 Moukeddar left
isBEKaml ISTR there were some sprints where a couple of folks got around to marking bugs as [LHF], is that still on these days? 18:08
rn: say @a[]; 18:09
p6eval niecza v22-19-gd874a8e: OUTPUT«===SORRY!===␤␤Variable @a is not predeclared at /tmp/6pCLEU1YYU line 1:␤------> say ⏏@a[];␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza…
..rakudo 72a27f: OUTPUT«===SORRY!===␤Variable @a is not declared␤at /tmp/RB_dq7hPUL:1␤»
isBEKaml rn: say "@a[]";
p6eval niecza v22-19-gd874a8e: OUTPUT«===SORRY!===␤␤Variable @a is not predeclared at /tmp/IYtkyURy7Z line 1:␤------> say "⏏@a[]";␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niec…
..rakudo 72a27f: OUTPUT«Null PMC access in find_method('postcircumfix:<[ ]>')␤ in block at /tmp/V2am28teBu:1␤␤»
isBEKaml NPMCA - oh, wow.
18:18 ifim joined
ifim r: (-> $x, *@rest { say $x; say @rest.join: ', ' })(<Tres Tristes Tigres>); 18:20
p6eval rakudo 72a27f: OUTPUT«Tres Tristes Tigres␤␤»
ifim n: (-> $x, *@rest { say $x; say @rest.join: ', ' })(<Tres Tristes Tigres>); 18:21
p6eval niecza v22-19-gd874a8e: OUTPUT«Tres Tristes Tigres␤␤»
ifim perl6: (-> $x, *@rest { say $x; say @rest.join: ', ' })(<Tres Tristes Tigres>, <Tragaban Trigo>); 18:23
p6eval rakudo 72a27f, niecza v22-19-gd874a8e: OUTPUT«Tres Tristes Tigres␤Tragaban, Trigo␤»
masak ifim: unline Perl 5, lists in argument lists don't automatically flatten. 18:27
ifim masak: yeah, I've come to realize that now 18:29
18:35 muckerr joined
ifim how can I explicitly flatten a list in such case? 18:41
masak r: sub f($a, $b, $c) { say [$a, $b, $c].perl }; f( |<foo bar baz> ) 18:46
p6eval rakudo 72a27f: OUTPUT«["foo", "bar", "baz"]␤»
masak using prefix:<|>.
or, don't flatten and accept a positional parameter.
r: sub f(*@x) { say @x.perl }; f( <foo bar baz> ) 18:47
p6eval rakudo 72a27f: OUTPUT«Array.new("foo", "bar", "baz")␤»
masak r: sub f(@x) { say @x.perl }; f( <foo bar baz> )
p6eval rakudo 72a27f: OUTPUT«("foo", "bar", "baz")␤»
18:48 xinming_ joined
ifim masak: thanks for the insight 18:50
tadzik masak: what browser do you use? 18:51
in Gtk-based stuff it's usually doable
18:52 xinming left, isBEKaml left 18:56 araujo joined
masak tadzik: what browser do I use when I hit Ctrl+W ? usually Chrome. and yes, Ctrl+Shift+T can be a blessing. especially if it restores my form data. 18:56
18:56 sizz left
tadzik masak: echo 'gtk-key-theme-name = "Emacs"' >> ~/.gtkrc-2.0 18:57
C-w still closes tab when focus is outside a form of some sort
in form, C-w, C-u and all friends work
masak schweet. 18:59
19:00 sizz joined 19:07 cognominal joined 19:10 isBEKaml joined, spider-mario joined 19:12 spider-mario left
isBEKaml has anyone ever seen this on recent parrot? gist.github.com/4055922 19:14
19:16 spider-mario joined 19:18 isBEKaml|2 joined 19:19 isBEKaml left
isBEKaml|2 Okay, I had an older downloaded parrot tarball (4.7) that built successfully from command prompt(cmd.exe). Recent checkout failed on cygwin though. 19:29
masak isBEKaml|2: haven't seen that, no. 19:33
isBEKaml|2 masak: I'm building rakudo now, pointing to parrot4.7. 19:35
masak: It's currently checking out nqp, let's see how that goes.
sorear o/ 19:37
19:37 isBEKaml|2 is now known as isBEKaml
isBEKaml hello, sorear 19:38
masak sorear! \o/ 19:39
sorear masak!
cosimo moritz: ping 19:49
pmurias \o 19:52
isBEKaml I'll give this another round tomorrow. g'night, folks! 19:53
19:53 isBEKaml left
pmurias what's the maximum recursion depth in nqp? 19:56
sorry was looking at head of a stacktrace and got confused 19:57
20:09 obra joined, bruges left
cosimo small retouch of camelia, i.imgur.com/eCSNB.png 20:09
japhb cosimo, what did you change? 20:11
masak the eyes, I think.
oh, and the mouth.
20:12 bruges joined
masak cosimo: I think the mouth is meant to be askew. 20:12
jnthn mouth is more symmetric now :)
20:12 benabik left
jnthn
.oO( The mouth is meant to askew a question )
20:12
20:12 benabik joined
masak I've kinda gotten used to the mouth being a bit non-symmetric. 20:13
cosimo it is still, just more subtle 20:20
japhb: eyes have a catchlight, and mouth line slightly more regular 20:21
masak r: class N { has $.n; method plus($c: $other) { N.new( $c.n + $other.n ) } }; say N.new(:n(40)).plus( N.new(:n(2)) ).n; 20:27
p6eval rakudo 72a27f: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:708␤ in method plus at /tmp/HqOK5PmSD9:1␤ in block at /tmp/HqOK5PmSD9:1␤␤»
masak r: class N { has $.n; method plus($c: $other) { N.new( :n($c.n + $other.n) ) } }; say N.new(:n(40)).plus( N.new(:n(2)) ).n; 20:28
p6eval rakudo 72a27f: OUTPUT«42␤»
20:35 muckerr left 20:36 cognominal left, tokuhiro_ joined 20:41 tokuhiro_ left 20:43 cognominal joined 20:45 jaffa4 left 20:46 rindolf left 20:47 cognominal_ joined
TimToady yes, all the asymmetry in Camelia is intentional 20:47
including both mouth and eyes 20:48
otherwise she looks sterile
20:49 cognominal left
TimToady and those asymmetries are in support of the fundamental asymmetry of the P and the 6 20:50
lunch & 20:51
20:53 SamuraiJack left 20:56 kurahaupo joined
cognominal_ www.theatlantic.com/technology/arch..._page=true 21:04
may interest some people here.
masak .oO( 2022: AI on where Noam Chomsky went wrong ) 21:05
jnthn *lol*
tadzik :D 21:06
21:06 GlitchMr left
cognominal_ masak : I will believe it when such article will be written but some computer. I don't hold my breath. 21:08
masak *nod* 21:09
AI is hard, no doubt.
today I realized that we may never get household robots in the way they're sometimes depicted in futurist fiction. probably we'll just get better and better appliances, but they'll keep looking like vacuum cleaners and microwave ovens. 21:10
jnthn But I want a fridge with arms so it can hand me my beer!
cognominal_ interestingly enough, fake articles are generated by computer to fool Google and the very statistical methods criticized by Chomsky, 21:11
masak wasn't this the article that Norvig had written a response to? 21:12
cognominal_ masak, url?
geekosaur sends jnthn Gallegher's robot 21:13
masak well, there's norvig.com/chomsky.html -- but I believe there was also something newer.
cognominal_ masak: this is linked by the article I pointed to. :) 21:14
masak I'm sure. maybe I simply got the ordering wrong, and Chomsky's reply is the latest one. 21:15
I should read both, because these things interest me.
21:18 spider-mario left 21:24 spider-mario joined
sorear have y'all seen SCIgen? 21:27
masak no. 21:29
oh, that one. yes. :)
cognominal_ jnthn, I don't want a fridge with arms, that will strangle me because some guy from Anonymous has hacked it. Probably because he was pissed off by my criticism about faceless milicia 21:30
japhb OK, I'm thinking myself into a corner here, and I think part of the key is understanding something in src/core/Cool.pm. To whit: Why do some methods coerce with .Str and others with .Stringy?
cognominal_ *militia 21:31
21:32 spider-mario left, spider-mario joined
jnthn japhb: .Str promises to give you back something you can unbox into a native string 21:33
japhb: .Stringy means something with a string nature; a Cat (when we have 'em) will also be Stringy. 21:34
japhb: In general, anything that goes on to nqp::unbox_s something wants to have called .Str. In other places, .Stringy should be enough.
cognominal_ what is a Cat, I forgot. Is that a lazy stream that could be lazy matched?
jnthn cognominal_: Yeah. 21:35
japhb That matches my current mental model of Str and Stringy, but still doesn't explain why some things want one or the other even when they contain no nqp:: ops
For instance, .capitalize and .wordcase (yes, I know the former is DEPRECATED; my point is why the different coercion inside)
cognominal_ a Cat chasing a Rat; yes I am irrationnal
jnthn japhb: There may be some things that use Str now that perhaps should use Stringy. 21:36
cognominal_ that would be Cool…. Whatever.
jnthn japhb: I wouldn't read too much into those that aren't trying to use the thing as something unboxable.
I'm a little surprised by some of the things in Cool, tbh. 21:38
As in, surprised they're doing the real work rather than .Stringy.foo to delegate.
sorear cognominal_: we'll know the singularity is here when your refrigerator decides to hack Anonymous 21:39
jnthn japhb: Yeah, looking at this...I'm dubious everything is in the right place. 21:40
cognominal_ sorear++
japhb I was wondering if the promise of "unbox to native str" also implied "promise to be non-lazy". Which may be true in itself, but I think some of the code assumes that Stringy is going to be lazy, and that some ops "can't" be done on lazy structures. Hence chop and chomp using .Str.
jnthn, agreed with dubiousness of real work in Cool.
jnthn japhb: True, but in that case it's better handled by Cat either not implementing the method or implementing it to throw an exception to say you can't do it. 21:41
I think the Numeric stuff in Cool is a much better example though: just straight .Numeric coercion and then delegation.
japhb I agree. I was (badly, I know) saying I think the assumption that you'd have to use .Str to combat laziness in a method that does no unboxing is a bad assumption. 21:42
Right.
cognominal_ the Cool motto is : "it is cool to cast and delegate" :) 21:43
jnthn japhb: Yes, agree on bad assumption.
21:43 domidumont left
jnthn .chars is a valid question to ask a lazy thing for example. Though it has the same consequence as asking a lazy list .elems 21:44
japhb What's the most efficient way to say in NQP/Parrot "I want a Perl 6 view of the thing you would get by unboxing self as a num"? Is it: nqp::p6box_n(nqp::unbox_n(self))? Or is there something that triggers something faster at the PIR level? 21:45
If that's the best sequence, how is the bigint version spelled? It wasn't clear to me what the bigint version is, as opposed to the native int version. 21:47
.oO( Bet nobody can guess what I've been banging at ... )
21:48
I did manage to find a fast way to get Rakudo to eat all RAM. Really, really fast, actually. 21:49
Though it likely falls under DIHWIDT 21:50
sorear Congratulations? 21:51
japhb I guess. Happy with the behavior of the OOM killer, at least. So far it consistently kills the right thing. :-)
jnthn electure-ms.studiumdigitale.uni-fra...flash.html # video of my Rakudo Debugger lighting talk at YAPC::EU, up at last! 21:54
And done nicely so you can read what's on my screen :D
japhb OOooh, that will be fun to watch
jnthn++
jnthn japhb: I'm kinda confused about the question... 21:55
japhb: What do you have in self? What are you writing this in?
nqp::p6box_n expects a native. Note you can only use nqp::unbox_n on some 6model objects that boxes a num. It's *not* in any sense coercive. 21:56
That is, if you do nqp::unbox_n on an Int it won't work 'cus an Int can't unbox to a floating point number.
masak autopun lightning talk: electure-ms.studiumdigitale.uni-fra...flash.html 21:57
21:57 leont left
japhb jnthn, well for instance while learning about how Bool works, I came across .HOW.set_boolification_mode and .HOW.publish_boolification_mode. After some experimentation, I discovered that several ways of looking at a boolean value use .Bool, but ?? !! uses the boolification mode directly. I kinda wondered if there were back doors like that for int, num, and bigint, where they don't hit methods, but operate purely at the 6model level. 21:57
I apologize, coercive doesn't make sense for the existing types. But I'm working on dual variables, so in a sense I coerce when I want to get an Int from an IntStr. 21:58
jnthn An IntStr will need to be something that can box an Int and a Str 21:59
japhb Yes, sure.
And I recall your box_target info.
But what does 3 * $a do, if $a is an IntStr? 22:00
s/does/should/, I guess
Or even just $a.Int
jnthn r: class IntStr is Int is Str { }; say nqp::box_s('blah', IntStr);
p6eval rakudo 72a27f: OUTPUT«0␤»
jnthn r: class IntStr is Int is Str { }; say nqp::box_i(42, IntStr); 22:01
p6eval rakudo 72a27f: OUTPUT«42␤»
jnthn That alone gets you something that can box both, but there's no way to get it to do both at once yet other than from C land...
Hm, what it does in that case will be down to multiple dispatch semantics.
r: class IntStr is Int is Str { }; multi m(Int) { say 'i' }; multi m(Str) { say 's' }; multi m(Cool) { say 'c' }; m(IntStr) 22:02
p6eval rakudo 72a27f: OUTPUT«Ambiguous call to 'm'; these signatures all match:␤:(Int )␤:(Str )␤␤ in block at /tmp/7bAhvQEhTt:1␤␤»
jnthn Ah, yeah. Hmmmmm.
japhb
.oO( jnthn is beginning to see why I've been going in circles trying to find an exit )
jnthn oh 22:04
It's apparently, says S02, not our problem.
"In case multiple dispatch determines that it could dispatch as either string or number, a tie results, which may result in an ambiguous dispatch error. You'll need to use prefix + or ~ on the argument to resolve the ambiguity in that case."
japhb Bah, have to run, sorry.
&
jnthn r: class IntStr is Int is Str { }; say 3 * nqp::box_i(42, IntStr);
p6eval rakudo 72a27f: OUTPUT«126␤»
jnthn japhb: ^^ just works because there's no ambiguity. 22:05
masak jnthn: nice debugger lightning talk :) 22:08
jnthn masak: You should totally come to my debugger full-length talk at London Perl Workshop! :P 22:09
Krunch jnthn: when is that? 22:12
masak jnthn: I'll have to check my schedule... :P 22:14
22:17 benabik left 22:18 benabik joined
jnthn Krunch: 24th I believe 22:28
masak Note: there is a new version of cabal-install available. 22:30
To upgrade, run: cabal install cabal-install
this made me smile for some reason. :)
Krunch jnthn: yeah, just found the site; wasn't aware of this, i might come; thanks
jnthn :)
22:32 fgomez left
cognominal_ jnthn talks are definitively worth it. 22:32
22:39 fgomez joined 22:41 kaare_ left
masak 'night, #perl6 22:47
22:53 spider-mario left 22:54 benabik left 22:56 benabik joined 23:03 fgomez left 23:04 fgomez joined 23:13 tokuhiro_ joined 23:17 PacoAir left 23:33 MayDaniel left 23:35 dayangkun joined 23:36 aloha left 23:41 aindilis joined 23:45 aloha joined 23:46 fgomez left 23:53 fgomez joined
cognominal_ jnthn, an oddity with the span of an infix EXPR match gist.github.com/cdc05adc82ad98272ea7 23:54
japhb r: class IntStr is Int is Str { }; my $dual = nqp::box_i(42, IntStr); say $dual.Int.WHAT; 23:56
p6eval rakudo 72a27f: OUTPUT«IntStr()␤»
cognominal_ phenny, tell jnthn, an oddity with the span of an infix EXPR match gist.github.com/cdc05adc82ad98272ea7
phenny cognominal_: I'll pass that on when jnthn is around.
japhb jnthn, TimToady, I realized I've been thinking that the above behavior is wrong, because we want $foo.Int to be an actual Int, not a subtype of Int.
Is this actually correct behavior? 23:57