»ö« 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!===Confusedat /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 testingTest 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 declaredat /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 TigresTragaban, 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 |