»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:00
aborazmeh joined
00:05
pdcawley left
00:06
Mouq left
00:07
pdcawley joined
00:15
kurahaupo left
00:21
Alula joined
00:36
grettis_ joined
00:39
grettis left
01:06
Sqirrel left
01:09
yeahnoob joined,
Mso150_x joined
01:15
camelia joined
01:16
ChanServ sets mode: +v camelia
01:22
dayangkun joined
01:25
Hor|zon joined
01:26
j4jackj is now known as jdj
01:30
Hor|zon left
01:51
Mso150_x left
01:53
camelia left
01:56
camelia joined
01:57
ChanServ sets mode: +v camelia
|
|||
japhb_ | .botsnack | 02:19 | |
yoleaux | :D | ||
japhb | .botsnack | ||
yoleaux | 16 Oct 2014 14:26Z <[Coke]> japhb: < moritz> [Coke]: I'm slowly preparing a replacement for feather that should be beefy enough to also replace host08 :-) | ||
:D | |||
japhb | moritz++ # feather/host08 replacement | ||
02:28
kurahaupo joined
02:41
chenryn joined
02:46
xenoterracide_ joined
02:48
Akagi201 left,
Akagi201 joined,
xenoterracide left
02:51
bjz left
02:52
noganex joined
02:55
noganex_ left
03:04
helloPerl joined
03:14
helloPerl left
03:17
mauke_ joined
03:20
mauke left
03:22
aborazmeh left
03:25
mauke_ is now known as mauke
03:26
Hor|zon joined
03:31
Hor|zon left
03:37
chenryn left,
grettis_ left
03:40
chenryn joined
03:47
SamuraiJack joined
03:55
SamuraiJack left
03:59
camelia left
|
|||
raydiak | m: (grammar{ token foo{.*}; token TOP{<@( token{<foo>} )>}; }).parse: '' | 04:01 | |
04:01
immortal joined,
immortal left,
immortal joined
04:02
erkan left
04:03
camelia joined
|
|||
raydiak | m: (grammar{ token foo{.*}; token TOP{<@( token{<foo>} )>}; }).parse: '' | 04:03 | |
04:04
adu left
|
|||
raydiak | p: say 1 | 04:04 | |
04:05
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | 04:05 | |
rakudo-parrot 0dcd0d: OUTPUT«(timeout)» | |||
raydiak bops camelia on the head like in Tron Legacy | |||
p: say 1 | |||
camelia | rakudo-parrot 0dcd0d: OUTPUT«(timeout)» | 04:06 | |
raydiak | eh, I give up for now | ||
anyway, that grammar thing above gives me a weird error (at least under moar, haven't tested others) and I was wondering if it should be expected to work | |||
m: (grammar{ token foo{.*}; token TOP{<@( token{<foo>} )>}; }).parse: '' | 04:09 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
04:09
slavik joined
04:12
pat_js left
04:13
Woodi joined
04:16
adu joined
04:23
[Sno] left
04:31
kaare_ joined
04:45
ggoebel11111112 joined
04:48
ggoebel11111111 left
04:50
Sqirrel joined
04:52
BenGoldberg left
04:54
pdcawley left
04:57
pdcawley joined
|
|||
TimToady | in general, putting no whitespace before blocks is asking for trouble | 05:11 | |
you can get away with it in some declarations, but the habit will come back and bite you | 05:16 | ||
anyway, I wouldn't expect that to work, since @() has no idea how to interpret anything that isn't a string or a regex, and token is a method, not a regex | 05:26 | ||
raydiak | oh | ||
05:27
Hor|zon joined
|
|||
raydiak | the spaces were just in the shortened example, it's the result of a couple hours of golfing | 05:27 | |
but clearly I need to learn more about precisely what these things are before I can go throwing them around like I'm trying to | 05:28 | ||
^^the *lack of* spaces, that is | 05:30 | ||
05:31
Hor|zon left
05:32
[Sno] joined
|
|||
raydiak | S05 says token and rule are just special variants of regex | 05:33 | |
"The token declarator is really just short for regex :ratchet { ... }" | 05:34 | ||
TimToady | regex is also a method | 05:35 | |
they are variants insofar as the inside of the {} is regex language, but the outsides are really methods in Cursor space | |||
admittedly, it's a bit strange that regex declares something that isn't one :) | 05:36 | ||
raydiak | aye :) | ||
don't know what a Cursor is either, but that's me trying to use grammars w/o understanding how they work, I suspect | 05:37 | ||
TimToady | m: grammar G {}; say G.^mro | 05:38 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«(G) (Grammar) (Cursor) (Any) (Mu)» | ||
TimToady | Cursor is the part of the invocant that knows about match states (where you are in the match), while Grammar is the bit that knows about, er, grammars... | 05:39 | |
raydiak | the error I was getting was "No such method '...' for invocant of type 'Cursor'" where ... is whatever I named the one rule in my example | 05:41 | |
TimToady | so Cursor provides all the little regex goodies that perform different bits of matching, while Grammar provides things like the parse method | ||
raydiak | ah, I see | ||
TimToady | I don't know exactly how it came up with that message, but it indicates that it knew the inner token was supposed to have a Cursor object of some kind, but couldn't find 'foo' in it, because it wasn't hooked up with the outer grammar such that it could see it | 05:42 | |
the expression inside @() is just regular P6 code, and probably doesn't care that it's embedded somewhere down in a grammar | |||
raydiak | ah ha...b/c it's a method, not a regex, so no Cursor | ||
TimToady | it might be possible to make that work, but it's not the normal way to do things, so it's not something that has been hooked up to work | 05:44 | |
raydiak | m: (regex { . }).WHAT.say | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(Regex)» | ||
raydiak | m: (token { . }).WHAT.say | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(Regex)» | ||
raydiak | ? | 05:45 | |
TimToady | m: regex foo { . } | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«Useless declaration of a has-scoped method in mainline (did you mean 'my regex foo'?)» | ||
TimToady | the fact that it's anonymous probably prevented this error | ||
but it doesn't know how to pass the outer cursor in as the invocate to the inner token | |||
05:45
xenoterracide_ left
|
|||
TimToady | it's like @() has a bare method reference with no way to invoke it | 05:46 | |
m: (regex { . }).^signature | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«No such method 'signature' for invocant of type 'Perl6::Metamodel::ClassHOW' in block <unit> at /tmp/cLT8o7L83E:1» | ||
TimToady | m: (regex { . }).^sig | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«No such method 'sig' for invocant of type 'Perl6::Metamodel::ClassHOW' in block <unit> at /tmp/r3B6qf4fuG:1» | ||
TimToady | m: (regex { . }).^methods | 05:47 | |
camelia | ( no output ) | ||
TimToady | m: (regex { . }).^methods.say | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«<anon> <anon> <anon> <anon> <anon> <anon> ACCEPTS Bool gist <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> of returns onlystar assuming candidates cando multi soft wrap unwrap yada package WHY set_w…» | ||
TimToady | but that's really the same plight as any anonymous function or method before you put it someplace that knows how to invoke it | 05:48 | |
you'd have to add_method it somewhere before it would be called as a method | |||
raydiak | that makes sense | 05:49 | |
TimToady | in your code it might even do that, but doesn't know how to invoke it | ||
hmm, actually, probably doesn't install it, since it doesn't have a name | 05:50 | ||
but as an anonymous method, something would have to call it and supply an invocant explicitly | |||
and @() just ain't that smart | 05:51 | ||
m: (regex { . }).signature.say | 05:53 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«:(Mu: *%_)» | ||
raydiak | can't blame it, I was (still am) really just learning as I go and throwing things at it chaotically in an attempt to make it DWIM | 05:54 | |
TimToady | m: (regex { . })() | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«Too few positionals passed; expected 1 argument but got 0 in regex at /tmp/U74I3ol04E:1 in block <unit> at /tmp/U74I3ol04E:1» | ||
raydiak | and thanks TimToady++, I do understand now why it wouldn't work even if the error were more helpful | 05:55 | |
here's what the actual thing looks like: gist.github.com/raydiak/c78031087fc24a155107 | |||
I'm sure after some more reading and toying with it, I'll find a much cleaner way to accomplish that | 05:57 | ||
06:05
bjz joined
06:07
bjz left,
gfldex joined
|
|||
TimToady -> zzz & | 06:08 | ||
06:08
bjz joined
|
|||
raydiak | good idea...g'night #perl6 | 06:08 | |
06:14
baest joined
06:16
kurahaupo left
06:18
kaleem joined
06:20
baest left
06:23
kurahaupo joined
06:27
baest joined
06:29
rindolf joined
06:32
avuserow joined
06:34
adu left
06:42
avuserow left
06:44
pepl joined
06:48
FROGGS joined
06:50
baest left
06:51
darutoko joined
06:54
Sqirrel left
06:56
avuserow joined
06:59
dayangkun left,
gfldex left
07:02
bartolin joined
|
|||
masak | g'morning, #perl6 | 07:06 | |
07:10
rurban joined
|
|||
moritz | \o masak, * | 07:11 | |
rurban | \o is for morning? | 07:12 | |
moritz | it's the picture of raising a hand/arm in greeting | 07:13 | |
rurban | Oh, I'll tweet about it | ||
07:14
zakharyas joined
|
|||
kurahaupo | so o/ is a return wave | 07:14 | |
masak | there's not that much structure to it | ||
people wave in different directions, is all | 07:15 | ||
of course, if you wave back at someone, then it's a bit significant | |||
it's also a challenge to produce this line on IRC: | |||
/p | |||
er | |||
FROGGS | o\ | ||
moritz | some people also use ~ or ~~ for a wave | ||
masak | /o | ||
07:16
_slade_ left
|
|||
masak | moritz: in Asia, strings of ~ seem to indicate excited/shaky voice: "wow, how exciting~~~~~" | 07:16 | |
07:18
Alina-malina left
07:19
Alina-malina joined
07:21
Ven joined
|
|||
Ven | helo, #perl6 | 07:21 | |
FROGGS | hi Ven | 07:22 | |
07:23
ghostlines joined
07:26
Alina-malina left,
anaeem1 joined
07:28
Alina-malina joined,
rindolf left,
Hor|zon joined
07:32
slavik left,
Hor|zon left
07:34
ghostlines left,
ghostlines joined,
Mso150_x joined
|
|||
masak | ehlo, Ven | 07:36 | |
07:37
ghostlines left
|
|||
lizmat | #perl6! o/ | 07:38 | |
07:40
rindolf joined
|
|||
masak | \o/ | 07:41 | |
07:42
pecastro left
07:46
slavik joined
|
|||
Ven | Should we get language parsers under a specific namespace? | 07:50 | |
Probably better to have them with some tag, at least... | |||
moritz | is JSON::Tiny a language parser? | 07:51 | |
Ven | very good question. | ||
FROGGS | I'd say so | ||
Ven | OTTOMH, I'd go with yes. | ||
FROGGS | but it would feel weird to put it under some other namespace | 07:52 | |
07:53
Hor|zon joined
|
|||
moritz | well, it could go under DataFormat::JSON or so | 07:53 | |
or Serializer::JSON | |||
Ven | no, not serialization | ||
I'm just (or "mostly") talking about getting AST from stuff, here. | 07:54 | ||
peteretep | I think there's a real difference betweeen a programming language and serialization language | ||
Languages tend to need several parsing steps | |||
Tokenization, AST, etc, where serializaton languages much less so | |||
I guess XML being a weird inbetweener | |||
07:54
kurahaupo left
|
|||
masak | it's quite possible that in Perl 6 application, "language parsing" defies categorization. | 07:55 | |
peteretep | CPAN tends to lead with the language | ||
And then the thing to apply to that language | |||
masak | I mean, all of a sudden -- *whoops* -- my problem turns into a parsing problem. | ||
peteretep | I thnk that's most useful | ||
07:55
rindolf left
|
|||
peteretep | JSON::Tiny is a /document/ parser | 07:56 | |
moritz | Ven: well, the AST of a JSON document is the deserialized JSON data structure, no? | ||
peteretep | rather than a language parser | ||
moritz | peteretep: is latex a document or a language? | ||
Ven | moritz: yes. Not the serialized one | ||
peteretep | moritz: Latex is a language, but a file with Latex in is a document :-) Like RTF | ||
Ven | peteretep: alright, then of lisp – is that a document parser or a language parser? | ||
moritz | peteretep: I'm not sure that distinction can hold all the way up and down the document/language food chain | 07:57 | |
peteretep | I think people are capable of making the decisions at naming time | ||
I don't see CPAN struggling with this | |||
RTF::*; Inline::*; JSON::*; | 07:58 | ||
masak | the parser that's implied bŭ the code in strangelyconsistent.org/blog/speed-...-6-million -- is it parsing a *language* or a *document*? | ||
by* | |||
08:01
avuserow left
08:02
cognome left
08:03
cognome joined,
cognome left,
cognome joined
08:04
rindolf joined
08:09
ghostlines joined,
ghostlines left
08:10
ghostlines joined
|
|||
Ven | dilemna, dilemna: <<~>> + <<~>> or (X~) + Z~ ? | 08:12 | |
masak | hm. neither? :) | 08:13 | |
08:15
avuserow joined
08:17
slavik left
|
|||
moritz | those don't look equivalent to me | 08:18 | |
08:18
rurban left
08:19
abraxxa joined
|
|||
masak | to me, in either case, it looks like an expression that better have a good reason for being so complicated. | 08:19 | |
maybe factoring out into subexpressions would solve your woes? | |||
08:20
kjs_ joined
08:21
cognome left
|
|||
Ven | masak: @files <<~>> '.' <<~>> @exts; vs (@files X~ '.') Z~ @exts | 08:23 | |
moritz: ^ they're equivalent | 08:25 | ||
08:25
fhelmberger joined
08:27
baest joined
08:30
slavik joined
|
|||
masak | I think the difference comes down to hyper vs lazy semantics. | 08:31 | |
Ven: will you be benefiting from either of these? | |||
Ven | masak: no. I don't care about the order, and I don't care about laziness | ||
08:32
ivanshmakov left,
ivanshmakov joined
|
|||
masak | m: my @files = <file1 file2 file3>; my @exts = <pdf mp3 md>; .say for map {"$^file.$^xt}, (@files Z @exts) | 08:35 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«===SORRY!=== Error while compiling /tmp/aM8hlGQheXUnable to parse expression in double quotes; couldn't find final '"' at /tmp/aM8hlGQheX:1------> for map {"$^file.$^xt}, (@files Z @exts)⏏<EOL> expectin…» | ||
masak | m: my @files = <file1 file2 file3>; my @exts = <pdf mp3 md>; .say for map {"$^file.$^xt"}, (@files Z @exts) | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«file1.pdffile2.mp3file3.md» | ||
masak | when I look at the problem, I don't see two <<~>>, or one X~ and one Z~ | 08:36 | |
I just see a Z and a string concat from parts | |||
08:36
zakharyas left
|
|||
Ven | .say for map {"$^file.$^xt"}, (@files Z @exts) | 08:38 | |
say @files <<~>> '.' <<~>> @exts | |||
08:38
zakharyas joined
|
|||
Ven | I don't have a taste for obfuscation, but mine is still smaller | 08:39 | |
I also don't really want to map.. and having it parallelized can still be kind of cool, I gues | 08:40 | ||
08:40
Mso150_x left
|
|||
Ven | m: my @files = <foo bar baz>; my @exts = <o r z>; say "{any(@files)}.{any(@exts)}" # cute | 08:41 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«any("foo", "bar", "baz").any("o", "r", "z")» | ||
Ven | oh :( | ||
masak | you're thinking of the mythical `each` junction. | 08:44 | |
timotimo | ... i kind of like the each junction ... | ||
at least it's a nice syntactical construct | |||
masak | at least under one possible semantics of it, where several `each`es in a statement run in parallel. | ||
m: my @files = <file1 file2 file3>; my @exts = <pdf mp3 md>; say "$^file.$^xt" for @files Z @exts | 08:45 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«===SORRY!=== Error while compiling /tmp/cQOCWPzX4uCannot use placeholder parameter $^file in the mainlineat /tmp/cQOCWPzX4u:1------> 3>; my @exts = <pdf mp3 md>; say "$^file⏏.$^xt" for @files Z @exts» | ||
Ven | masak: yes. each is a gift I can't wait to unwrap :P | ||
masak | m: my @files = <file1 file2 file3>; my @exts = <pdf mp3 md>; say "$_[0].$_[1]" for @files Z @exts | 08:46 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«Index out of range. Is: 1, should be in 0..0 in method Str at src/gen/m-CORE.setting:13626 in method Stringy at src/gen/m-CORE.setting:1132 in block <unit> at /tmp/bAJ7fMK7y_:1» | ||
masak | hrm. | ||
m: my @files = <file1 file2 file3>; my @exts = <pdf mp3 md>; { say "$^file.$^xt" } for @files Z @exts | 08:48 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«file1.pdffile2.mp3file3.md» | ||
masak | \o/ | ||
Ven: look, no map :) | |||
Ven | yer a cheater, harry :) | 08:49 | |
masak | no, it's spec. | ||
Ven | That was a compliment :) | 08:50 | |
masak | \o/ | ||
& | |||
08:52
anaeem1 left
08:53
anaeem1_ joined
08:56
anaeem1_ left,
anaeem1_ joined
09:16
ghostlines left
09:18
rmgk_ joined,
rmgk is now known as Guest86708,
Guest86708 left,
rmgk_ is now known as rmgk
09:23
pat_js joined
|
|||
FROGGS | Ven++ # "yer a cheater, harry" | 09:24 | |
09:25
pecastro joined
09:30
yakudza left,
yeahnoob left
|
|||
dalek | ast: 5265f7d | usev6++ | S32-exceptions/misc.t: Add test for RT #120831 |
09:37 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120831 | ||
moritz | "cheating is technique" | 09:38 | |
Ven | not getting caught is :P | 09:43 | |
09:48
Hor|zon left
|
|||
dalek | ast: 46ef5bf | usev6++ | S32-str/sprintf.t: Add test for RT #120232 |
09:50 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120232 | ||
09:52
camelia left
09:55
Alina-malina left,
Alina-malina joined
09:58
rurban joined
09:59
yakudza joined,
camelia joined
10:00
chenryn left
10:01
ChanServ sets mode: +v camelia
10:03
Hor|zon joined
10:13
rurban left
10:14
rurban joined
10:30
TuxCM left
10:31
flaviusb joined
10:35
chenryn joined
10:47
chenryn left,
sivoais joined
10:53
TuxCM joined
10:54
chenryn joined
10:57
Ven left
11:13
Akagi201_ joined
11:16
Akagi201 left,
Akagi201_ left
|
|||
dalek | ast: a3b0edc | usev6++ | S02-literals/quoting.t: Add test for RT #120529 |
11:24 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120529 | ||
11:29
Hor|zon left
11:30
pepl left
11:34
kaleem left
|
|||
dalek | rlito: 1f529de | (Flavio S. Glock)++ | / (2 files): Perlito5 - fixed assignment of special variable in list context: ($^W) = 3 |
11:36 | |
11:37
ghostlines joined
|
|||
colomon | OO::Actors failed the smoke test overnight? | 11:37 | |
11:39
bjz left,
bjz joined
|
|||
jnthn | Hm, did it pass the smoke test since I added it? | 11:41 | |
I know the tests passed on my box... | |||
11:47
bjz_ joined,
bjz left,
pepl joined
11:48
abraxxa left
12:16
Grrrr joined
12:23
camelia left
12:28
pepl left,
pepl joined,
chenryn left
12:29
chenryn joined,
chenryn left
12:30
chenryn joined,
chenryn left,
chenryn joined,
chenryn left
12:31
chenryn joined,
chenryn left,
PZt joined,
chenryn joined,
chenryn left
12:32
chenryn joined,
chenryn left,
chenryn joined,
chenryn left
12:33
camelia joined,
kaare_ left
12:34
chenryn joined,
chenryn left,
ChanServ sets mode: +v camelia
|
|||
colomon | jnthn: yes, this is the first time the smoke test has failed for it. | 12:36 | |
colomon tests locally... | |||
hmmm, rakudobrew just automatically reinstalled it without issue | 12:39 | ||
transient error, maybe? it doesn't look like it was a downloading error or anything. | 12:40 | ||
12:42
kaare_ joined
|
|||
dalek | ast: 8942c27 | usev6++ | S14-roles/basic.t: Add test for RT #120919 |
12:43 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120919 | ||
12:45
pepl left
12:47
guru joined,
ponbiki joined,
guru is now known as Guest8670
12:48
Guest8670 is now known as ajr_,
ponbiki is now known as Guest94599
12:49
pepl joined
12:53
pepl left
12:54
pepl joined
12:57
anaeem1_ left
12:58
kaare_ left
|
|||
Ulti | m: say "doh" if "True" == True | 13:15 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏True' (indicated by ⏏) in method Numeric at src/gen/m-CORE.setting:13625 in sub infix:<==> at src/gen/m-CORE.setting:4509 in sub infix:<==> at src/gen/…» | ||
Ulti | m: say "doh" if "True" | 13:16 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«doh» | ||
Ulti | :/ | ||
the above doesn't feel quite right to me | 13:17 | ||
mauke | m: say "True" eq True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
Ulti | hmm | ||
what does if "True" do though | |||
13:17
Hor|zon joined
|
|||
mauke | converts "True" to bool, presumably | 13:17 | |
Ulti | m: say "doh" if "True".Bool == True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«doh» | ||
Ulti | so == is doing True.Int ? | 13:18 | |
moritz | not quite | ||
Bool is an enum based on Int | |||
so it already natively has a number interpretation | 13:19 | ||
m: say Bool.^parents(:all) | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«(Cool) (Any) (Mu)» | ||
moritz | erm | ||
at least that's how it's supposed to be :-) | |||
timotimo | say so True | ||
m: say so "True" | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | m: say so "False" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
mauke | what's cool? | ||
timotimo | m: say so "0" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
timotimo | m: say so "1" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | m: say so "0.0" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | m: say so "0e0" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | m: say so "0 " | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | m: say so "0 " | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | 13:20 | |
timotimo | m: say so "0" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
moritz | mauke: doc.perl6.org/type/Cool | ||
Ulti | m: say "doh" if "False" eq True | ||
camelia | ( no output ) | ||
Ulti | m: say "doh" if "False" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«doh» | ||
Ulti | yeah so the olde smart alec use 'eq' is a straw man | ||
timotimo | well, eq is string equality | ||
== is number equality | |||
Ulti | so what is boolean equality? | ||
moritz | and === is identity comparison | ||
timotimo | Ulti: the olde what? | ||
moritz | m: say True !xor False | 13:21 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«===SORRY!=== Error while compiling /tmp/ib8Ovl9tPiCannot negate xor because it is not iffy enoughat /tmp/ib8Ovl9tPi:1------> say True !xor⏏ False» | ||
mauke | moritz: "imgage" | ||
moritz | m: say not True xor False | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
dalek | c: 5475aad | moritz++ | htmlify.p6: typo, mauke++ |
||
Ulti | so an explicit .Bool === is the way to go? | 13:22 | |
13:22
kaleem joined
|
|||
mauke | go where? | 13:22 | |
moritz | or you can use prefix ? for boolification | ||
Ulti | if I want to actuall do boolean comparisson between two things | ||
moritz | m: my $x = 42; say ?$x === True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
Ulti | moritz: ahh ok | ||
mauke | && | ||
Ulti | thats a little less horrible | ||
13:22
darutoko- joined
|
|||
mauke | hmm, no | 13:22 | |
moritz | m: my $x = 42; say $x.so === True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
13:23
felher joined
|
|||
mauke | Ulti: when do you need that? | 13:23 | |
13:23
dwarring left
|
|||
Ulti | well I just showed something I would expect to be a boolean comparisson but it wasn't | 13:23 | |
13:23
felher is now known as Guest23179
|
|||
Ulti | why have Boolean literals if they are super weird to use | 13:23 | |
mauke | no, why are you trying to use a "boolean comparison"? | ||
timotimo | wait, you're saying "say 'doh' if "True"' doesn't feel right to you? | 13:24 | |
moritz | Ulti: mostly because they make it much clearer what's going on when you print the result | ||
Ulti: compare 'say 1 == 2' in perl 5 and perl 6 | |||
Ulti | no that "True" can be true but when compared to True it wasn't, I didnt consider that it was purely numeric comparisson | ||
moritz | perl 5 simply prints the empty string | ||
timotimo | m: say "True" == True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏True' (indicated by ⏏) in method Numeric at src/gen/m-CORE.setting:13625 in sub infix:<==> at src/gen/m-CORE.setting:4509 in sub infix:<==> at src/gen/…» | ||
timotimo | i don't understand %) | 13:25 | |
too many pastes in the near past | |||
13:25
darutoko left
|
|||
Ulti | m: say "This was true" if ?"True" == True | 13:25 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«This was true» | ||
Ulti | m: say "This was true" if "True" == True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏True' (indicated by ⏏) in method Numeric at src/gen/m-CORE.setting:13625 in sub infix:<==> at src/gen/m-CORE.setting:4509 in sub infix:<==> at src/gen/…» | ||
timotimo | that seems totally sane to me | 13:26 | |
Ulti | its sane sure | ||
sane from a language designers point of view | |||
m: say "This was true" if 1.0 == 1 | 13:27 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«This was true» | ||
Ulti | ^ this | ||
they are both numeric so its fine right | |||
moritz | correct | ||
timotimo | fair enough | ||
Ulti | but they arent the same numeric type | ||
moritz | yes | ||
timotimo | that's right | ||
moritz | m: say so 1.0 eqv 1 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
moritz | m: say so 1.0 === 1 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
timotimo | m: say so 1.0 eq 1 | ||
moritz | eqv and === do the same on value objects | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | :P | ||
oh, what. | |||
moritz | m: say ~1.0 | 13:28 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«1» | ||
timotimo | interesting | ||
13:28
Guest23179 left
|
|||
Ulti | why not just have strings coerce to numeric via .elems | 13:28 | |
timotimo | m: say so 1e0 eq 1 | ||
Ulti | then it would work | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
Ulti | and empty string would be false | ||
13:28
felher_ joined
|
|||
Ulti | numerically | 13:28 | |
timotimo | okay, what's your replacement for +"1024"? | ||
Ulti | heh trye | ||
moritz | Ulti: because people find 'perl' == 5 confusing | 13:29 | |
erm, 4 | |||
near enough :-) | |||
Ulti | wait what does smart match do here... | ||
huf | so it should also know about etymology? | ||
timotimo | huf: yeah, we should train a neuronal net for this | 13:30 | |
Ulti | well the simplest is just to have the single exception of boolean literals promote things to .Bool in any kind of operator | ||
since the literal is adding the boolean semantics | |||
timotimo | can you explain that some more? i don't understand | 13:31 | |
Ulti | if any expression involves False or True you promote the other operand to Bool | ||
mauke | I have a better idea | ||
DON'T WRITE == True | |||
Ulti | people will though | ||
all the time | |||
mauke | and they need to be slapped | ||
Ulti | sure | 13:32 | |
mauke | m: say 2 == True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
mauke | good | ||
well, it would be nice if that also threw an exception | |||
Ulti | m: say 1 == True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
Ulti | not so good | ||
timotimo | mauke: we only want that to throw an exception if it's written like that in the code, not if you == two variables and one of them happens to have True in it | 13:33 | |
Ulti | also it might not be True explicitly like that it might just be a boolean expression right? | ||
timotimo | Ulti: i disagree. we just have to make sure people know that == is numeral comparison | ||
FROGGS | m: say +True | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«1» | ||
Ulti | as in an expression that produces a Bool | ||
FROGGS | Ulti: it is an enum | ||
Ulti | yeah I get all of this | ||
moritz | people never write 2 == True | ||
they write $variable_that_might_be_2 == True | 13:34 | ||
even that seems very unlikely | |||
Ulti | no but they write if ($thing == True) | ||
wrongly but they do | |||
moritz | well, we can't prevent people from writing buggy code :-) | ||
Ulti | and strongly typed land that isn't crazy because you are testing its boolean too usually | ||
timotimo | so we should warn "== True doesn't make sense" if we see that? | 13:35 | |
FROGGS | m: say 2 ~~ True | ||
timotimo | like we do with ~~ True and ~~ False? | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«Potential difficulties: Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead at /tmp/xZolXeq17H:1 ------> say 2 ~~⏏ True2True» | ||
Ulti | timotimo: I think that would be most wise | ||
moritz | as long as it's a syntactic warning, I can live with that | 13:36 | |
timotimo | agreed | ||
Ulti | I mean given the language its an operation that really doesnt mean what it looks like and has no real use | ||
and the fix is kind of simple with a warning like that smartmatch one | 13:37 | ||
dalek | kudo/nom: 93fe76e | (Elizabeth Mattijsen)++ | src/core/Deprecations.pm: Properly check compiler version Should fix deprecation test errors on parrot and jvm |
||
mauke | != False | ||
Ulti | heh | ||
say "such code" unless ?"True" != False | |||
FROGGS | say "such code" unless ?"True" != False orelse ... | ||
dalek | ast: 195e181 | usev6++ | S14-roles/basic.t: Add test for RT #120931 |
13:38 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120931 | ||
Ulti found this by reading an article about things people hate about PHP ;) | |||
Util | Just FYI: The #parrotsketch weekly meeting has moved to Fridays at 13:30 UTC; so, now. | 13:39 | |
Ulti | though I agree part of what they hate about PHP is the morons who check for truth in an if statement explicitly :S | ||
13:42
kaleem left
|
|||
[Coke] | on a related note, whenever I see someone using 1/0 as boolean values in a language with booleans, they fail the code review. Also when they explicitly say things like if ( x == False) instead of if ( !x ). | 13:43 | |
(coldfusion is worse, because they have booleans but special case a lot of string handling, so you might see x == "False" or x EQ "NO" or... | |||
timotimo | m: say so 1/0 | 13:44 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | seems like kind of a sane truth value | 13:45 | |
m: say so 0/1 # this, OTOH ... | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
Ulti | m: say so 1|0 | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
timotimo | %) | ||
TimToady | say so set() | 13:46 | |
m: say so set() | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
TimToady | cool | ||
13:46
adu joined
|
|||
timotimo | m: say set() ~~ Cool | 13:46 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«False» | ||
Ulti | empty set as False feels good | ||
timotimo | :( | ||
Ulti: i think people will learn quickly enough that == isn't the "generic comparison operator" when they write their first lines of code and end up trying to == some strings together, FWIW. | 13:47 | ||
it's not like they'll be coding perl6 for two months and then suddenly stumble over this | |||
Ulti | dont underestimate the person who monkey patches without knowing the language at all | ||
and how often a check box from the web will have the value "True" | |||
eq is more scary than what I was saying | 13:48 | ||
timotimo | m) | ||
TimToady | fuzzy thinkers will fuzz | ||
timotimo | you mean people will start eq'ing with "True" and "False"? | ||
Ulti | do stuff if $checkbox eq True | 13:49 | |
that will do exactly what they wanted it to do | |||
until someone one day changes the HTML template to be 1 and 0 or true and false | |||
TimToady | course, the confusing thing there is that True starts out as a string you typed into your program | ||
Ulti | then BOOM | ||
13:50
Mouq joined
|
|||
Ulti | but yeah bad code is bad, just felt like if you have warnings for ~~ might be worth mentioning elsewhere | 13:53 | |
13:53
adu left
|
|||
Ulti | I guess a linter might be a better idea so as not to slow down the compiler for the stupidest amongst us | 13:54 | |
13:54
adu joined
13:55
JimmyZ joined
|
|||
TimToady | Haters gonna hate, coders gonna code... | 13:59 | |
14:01
felher_ is now known as WhiteDragon
14:02
WhiteDragon is now known as felher_
14:07
adu left,
Hor|zon left
14:08
Hor|zon joined
14:09
psch joined
|
|||
psch | hi #perl6 \o | 14:10 | |
m: say "True" ~~ .Bool | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
14:11
PZt left
|
|||
TimToady | m: say "False" ~~ .Bool | 14:12 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
TimToady | m: say "Felix The Cat" ~~ .Bool | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
psch | TimToady: yes, it's functionally prefix:<so> or prefix:<?>. the backlog got me the idea | 14:13 | |
TimToady | m: say "Felix The Cat" ~~ .so | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
TimToady | golfed it fer ya | ||
timotimo | m: say "Felix The Cat" ~~ :so | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
psch | m: say "True" ~~ ?$_ | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
psch | line noise-ier | 14:14 | |
mauke | m: say "/lib/libc.so.6" ~~ .so | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
TimToady | m: say "Felix The Cat" ~~ ?* | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«True» | ||
psch | ah right :) | ||
TimToady | course there's always "True".so as well | 14:15 | |
gotta be a pun in there somewhere | |||
timotimo | so true... | 14:16 | |
TimToady | but I'm not married to the idea | ||
14:17
treehug88 joined
|
|||
masak | m: say "" ~~ .so | 14:18 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
Ulti | o___O | 14:19 | |
mauke | well, why don't you just say .so | ||
TimToady | m: say .so | ||
Ulti | masak that was False rather than timeout for me locally | 14:20 | |
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
masak | m: say "(timeout)" | ||
Ulti | :) | ||
TimToady | wait for it... | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
masak | /o\ | ||
timotimo | wow, this perl6 thing is really ridiculously slow! | ||
mauke | m: print "(timeout)" | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
masak | m: print "(TIMEOUT)".lc | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | 14:21 | |
TimToady | lc = library case | ||
mauke is tempted to add a sleep | |||
timotimo | m: ("a".."z").pick(7).join("").print | ||
er | |||
m: ("a".."z").pick(7).join("").fmt("(%s)").print | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | 14:22 | |
Ulti | m: say "(タイムアウ)".translate('English') | ||
masak | m: print "(", <out t me i>.sort(*.length).join, ")" | ||
(relies on sorting being stable) | |||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
rakudo-moar 0dcd0d: OUTPUT«No such method 'length' for invocant of type 'Str'Did you mean 'elems', 'chars', 'graphs' or 'codes'? in block <unit> at /tmp/TT9mI71bZ4:1» | |||
masak | ahaha | ||
Ulti | hah | ||
masak | m: print "(", <out t me i>.sort(*.chars).join, ")" | 14:23 | |
psch | hehe | ||
Ulti | translating Japanese is easier | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
TimToady | はい! | ||
14:23
pecastro left
14:28
pat_js left
|
|||
TimToady | .so desu ne... | 14:30 | |
timotimo | how did the nan desk KA joke work again? nan sounds like the word for bread in what lang? | 14:40 | |
tadzik | naan is the indian bread | ||
timotimo | ah | 14:41 | |
hey tadzik | |||
tadzik | hey hey | ||
timotimo | are you going to bind box2d in the near future? | 14:42 | |
tadzik | possibly :) | ||
is it blocking some project of yours? | |||
timotimo | not really | ||
tadzik | that'd bump it on the priority list | ||
timotimo | seems like a 6.0.0 feature to me :P | 14:43 | |
tadzik | :) | ||
I'll keep that in mind | |||
jnthn | evening, #perl6 | ||
tadzik | but.. but steroids isn't even 1.0.0 yet P | 14:44 | |
:P | |||
timotimo | hah | ||
tadzik | that reminds me of GCI | 14:45 | |
I'll start that wiki somewhere | |||
timotimo | hm? | ||
tadzik | I think we should join google code-in | ||
as Perl 6 | |||
timotimo | oh. when is that? | ||
tadzik | timotimo: goo.gl/lwCMDf | 14:46 | |
timotimo | hah | ||
14:47
smls joined
|
|||
smls | Hi | 14:48 | |
Congrats to everyone involved on getting the GLR started! | |||
14:48
ajr_ left
|
|||
smls | When first reading about it I thought the methods vs subs difference in flattening behavior was jarring, but after looking at what it would mean for some practical examples it seems okay. | 14:49 | |
A method's invocant and a function's argument list are *not* the same thing, so they don't need to behave the same, and in fact already don't. | 14:50 | ||
TimToady | it does upset the hobgoblins though | ||
14:50
ajr joined
|
|||
smls | An invocant is something I tend to think of as a single object on which I want to perform an operation. So it makes perfect sense to treat it as an opaque thing whose internals should not be meddled with by something like auto-flattening. | 14:50 | |
An argument list (or signature/capture in general) OTOH is something with much more "magic" involved... | |||
14:50
ajr is now known as Guest25174
14:51
Guest25174 is now known as ajr_
|
|||
tadzik | I started github.com/perl6/ecosystem/wiki/GC...ject-Ideas | 14:51 | |
smls | It feel more like passing a collection of individual pieces of data into a given template/structure, so IMO it makes sense that flattening treats an iterable in slurpy position as a way to specify such pieces of data (items) rather than "itself" as an object. | ||
tadzik | please contriboot | ||
smls | Btw, another thing the last p6weekly said would be discussed at APW2014 is the 6.0 release (and which feature milestones are planned for it). | 14:53 | |
Any update on that front? | |||
14:54
kjs_ left
|
|||
TimToady | most of the discussion was about the GLR, though there's no change in the consensus that we also want NFG and NSA before that, though perhaps native shaped arrays are two features hiding in one spot | 14:55 | |
[Coke] wonders if t/spec/test_summary can handle TEST_JOBS. or -j. or... | |||
TimToady | obviously we also need a serious pass on the fudging in roast | ||
masak is surprised that not more of a consensus about 6.0.0 was reached during APW2014 | 14:56 | ||
TimToady | that would take managers :) | ||
lizmat | well, *I* wanted to reach more consensus | ||
but as a manager I already saw people getting overloaded | 14:57 | ||
masak | maybe the sense was "we need to do GLR, NFG and NSA before 6.0.0, so before that there's no sense in talking about a 6.0.0" ? | ||
[Coke] | NSA? | ||
TimToady | native shaped arrays | ||
14:57
flaviusb left
|
|||
lizmat | indeed... TimToady's talk already gave a good direction in that respect :-) | 14:57 | |
masak quietly puts [Coke] on a no-fly list | |||
TimToady | but as I said, that might be two things | ||
[Coke] | can we call it PDL to avoid confusion? ;) | ||
jnthn | TimToady: I'd say so | ||
TimToady: I'm planning to have us native arrays before the end of the year. | 14:58 | ||
masak | [Coke]: or S09 | ||
colomon | \o/ | ||
jnthn | TimToady: Shaped probably come as a second thing after it. | ||
masak | I'm planning to have us a solid way forward with macros before the end of the year. | ||
jnthn had his last day or $dayjob today for a few weeks, and now has vacation :) | |||
*of | |||
lizmat | jnthn++ # for taking a vacation | ||
jnthn | Planning to spend lots of time outdoors, and eat lots of nice noms :) | 14:59 | |
But I'll be about here now and then, and may do the odd patch as I feel :) | |||
Mostly want to relax, recharge, and come back with good energy for lots of stuff after it :) | |||
dalek | rl6-roast-data: 801f183 | coke++ | bin/ (2 files): Run rakudo.jvm again, now on a box that can. |
15:00 | |
rl6-roast-data: fe8d464 | coke++ | bin/ (2 files): Don't use a hardcoded perl |
|||
rl6-roast-data: 2ec9a0d | coke++ | bin/rakudo.parrot.sh: Use more cores |
|||
rl6-roast-data: fc0af09 | coke++ | / (5 files): today (automated commit) |
|||
TimToady usually comes back exhausted after a vacation :) | |||
[Coke] | TimToady: me too | ||
TimToady | but at least it's a different kind of exhaustion | ||
jnthn | Well, I tend to come back less exhausted mentally. Though physically is a different matter. :) | 15:01 | |
TimToady | 'course, the fact that most of my vacations also contain a conference doesn't help there... | ||
jnthn has some nice hikes planned :) | |||
masak | I have a comment of my own on strangelyconsistent.org/blog/macros...ing-macros | ||
I just now ran into a use case where I wanted a macro to be usable in a certain environment. | 15:02 | ||
however, the environment wasn't another macro, just a certain method call on a certain type. | |||
[Coke] | until recently, hikes seemed crazy to me. I've done a bunch of suburban ones lately, though, so doing them in actual outdoors doesn't seem as weird. :) | ||
masak | so, at least for the "validation" part, the parent element/environment sometimes doesn't want to be a macro. | 15:03 | |
TimToady is suspicious of mixing language tweaks with the late binding system, which we've tried to keep very separate... | |||
masak | TimToady: I'm not sure that's what I'm doing here. please feel free to prove to me that that's what I'm doing. but I don't think so. | 15:04 | |
TimToady | of course, macros are for cheating :) | ||
masak | right. | ||
15:05
bjz_ left
|
|||
masak | but I don't see it as "late binding" that we can ask the Qtree about what type it can prove statically that the invocant belongs to | 15:05 | |
TimToady | for some definition of belongs to that might not achieve identity | ||
in the presence of derivation | |||
masak | though now when I look at my own example, it is kind of tricky, because the example is @stuff.grep({ .theMethod({ ... }) }) | 15:06 | |
so, yeah. maybe too clever. | |||
15:06
bjz joined
|
|||
masak | a runtime check there may be all we can expect to get. | 15:07 | |
[Coke] | is there an environment variable for any makes that will do what -j does? | ||
TimToady could see a class of macros that defer application till LINK time | |||
15:09
Hor|zon left
|
|||
TimToady | sort of a set of deferred optimizations specified by the user | 15:09 | |
smls | It would be cool to have a blog post to point people to, which lists the feature milestones (GLR, NFG, native/shaped arrays, better macros...) and timeframes/plans mentioned above | 15:10 | |
[Coke] | has anyone started working on prove6? | ||
pmichaud | good morning, #perl6 | ||
[Coke] | pmichaud: ho | ||
pmichaud reads backscroll | |||
15:11
pepl left
|
|||
lizmat | smls: have you seen pmthium.com/2014/10/apw2014/ ? | 15:11 | |
pmichaud o/ | |||
15:11
pepl joined
|
|||
dalek | ecs: a6c0bb7 | (Elizabeth Mattijsen)++ | S16-io.pod: Add mkpath() |
15:12 | |
smls | btw another way to think about the flattening rules: The closest functional equivalent of a method's invocant, is a positional parameter (and in fact in P5 that's literally what it was). And those don't auto-flatten either. | 15:13 | |
15:13
pecastro joined
|
|||
smls | lizmat: yes, even commented in the comment section :) | 15:13 | |
lizmat | ah, ok :-) | 15:14 | |
[Coke] | I feel like I'm the only one who doesn't ever want any flattening ever. | ||
masak | TimToady: I think a certain class of type checking and analysis should get deferred until LINK time. | ||
TimToady: but some also just to CHECK time. | |||
[Coke] | it would be nice if the specs had a note about why we want this other than "c.f.: perl5" | 15:15 | |
TimToady | [Coke]: what do you mean "started working"? you were around for irclog.perlgeek.de/perl6/2014-09-16#i_9366780 | ||
[Coke] | (maybe that's spelled "cf.") | ||
15:15
Hor|zon joined
|
|||
smls | [Coke]: Without flattening, there's wouldn't be much justification left to have different sigils. | 15:15 | |
15:16
kjs_ joined
|
|||
TimToady | list interpolation is nearly as important as string interpolation | 15:16 | |
[Coke] | you must use arrays differently than I do. :) | ||
15:18
pepl left
|
|||
[Coke] | TimToady: (prove6) thank you, external memory banks. | 15:18 | |
pmichaud | [Coke]: I think that "c.f.: perl5" is shortcut for "all the reasons that Perl 5 has flattening", and not just "we flatten because that's what p5 does" | ||
[Coke] | pmichaud: that's still a shortcut explanation that explains nothing. | 15:19 | |
pmichaud | [Coke]: agreed. :) | ||
here's the example I've come up with: | |||
map &block, 1, $a, 6..10, @c; | 15:20 | ||
do we expect that 6..10 to flatten? | |||
I suspect most people would say "yes" | |||
[Coke] | ... why would you ever write that code? | ||
pmichaud | same with sequences | ||
oh, I mix ranges, sequences, and lists fairly frequently | 15:21 | ||
I might even be able to find an example. | |||
masak | pmichaud: but sequences are less of a problem because with their really loose prec they have to be parenthesized in most such map calls. | ||
TimToady | please read pages 1..5, 16, 24..27 | ||
15:21
Mouq left
|
|||
masak | otherwise they gobble the block into the sequence op | 15:21 | |
pmichaud | masak: so you're saying that the parens should mean "don't flatten this sequence"? I don't see how parens help | 15:22 | |
may &block, 1, $a, (6,7 ... 10), @c; | |||
masak | oh, would a sequence not flatten under the new semantics? hm. | ||
pmichaud | "never flatten" would imply that. | ||
masak | that may take some getting used to, yes. | ||
TimToady | no, that would still flatten | 15:23 | |
pmichaud | 15:14 <[Coke]> I feel like I'm the only one who doesn't ever want any flattening ever. | ||
masak | aha. | ||
TimToady | (in an argument list) | ||
(in a slurpy argument list) | |||
pmichaud | If we say "doesn't ever want any flattening ever", then that's the end result. | ||
masak | oh, we're not discussing the result of GLR, we're discussing [Coke]'s world where nothing flattens | ||
15:23
smls left
|
|||
pmichaud | well, it's not just Coke's world. I've heard a number of people say that, including at APW2014 | 15:24 | |
masak | I'm pretty sure I enjoy the results of flattening at least sometimes. | ||
what I would most clamor for would be consistency. and GLR seems to provide that, to some extent. | |||
pmichaud | ISTR that japhb++ was also somewhat in the "never flatten" camp | 15:25 | |
TimToady | well, it's the ruby view where sigils no longer have anything to do with interpolation, so you have to have an escape for either list or string interpolation | ||
pmichaud | masak: well, the buzz I'm hearing now is that GLR currently isn't quite consistent enough, because it doesn't go as far as "never flatten" | ||
TimToady | but that's one of the main reasons for sigils in the first place, and we're not gonna change that | ||
masak | pmichaud: ok. I respectfully disagree with such a stance. | 15:26 | |
15:26
JimmyZ left
|
|||
pmichaud | what would help is if we had some concrete examples where flattening is clearly the more desirable behavior | 15:26 | |
thus Coke's saying "why we want this other than c.f. perl 5" | |||
(which I agree with, we should have a better story there.) | |||
TimToady | my @sorted = @pre, $pivot, @post; | 15:27 | |
masak | (yes, it's spelled "cf.") :) | ||
short for "confer" | |||
pmichaud | m+ | 15:28 | |
short for "masak++" | |||
masak | I bet something with listop `push` could be a use case too | ||
we're expecting things just to flatten into a `push` | |||
pmichaud | push @pages, 1..5, 16, 24..27; | 15:29 | |
masak | right. | ||
pmichaud | except that if @pages is an array it would flatten anyway. | ||
oh, never mind -- not necessarily. | |||
so perhaps that's a good example. | |||
the counter-arg to it is that one can be more explicit with "flat" | 15:30 | ||
[Coke] | I might want those things to not flatten. and if @pages.push: is different from push @pages, that seems like a big confusion point. | ||
pmichaud | [Coke]: oh, that's not different at all. | ||
we're only talking about non-flattening on invocant, not on arguments. | |||
15:30
kst` joined
|
|||
TimToady | hobgoblins | 15:30 | |
pmichaud | @pages.push: 1..5, 16, 24..27 and push @pages, 1..5, 16, 24..27 would be the same post-GLR | 15:31 | |
[Coke] | ok, that wasn't clear on my first read through | ||
TimToady | oh, not hobgoblines | ||
*ns | |||
timotimo | hobbesgoblins? | ||
pmichaud | push @pages, flat 1..5, 16, 24..27 # in a world that never flattens implicitly | ||
TimToady | then you still have a flattening context | 15:32 | |
pmichaud | when people say "never flattens" I'm pretty sure they mean "never implicitly flattens" | ||
TimToady | push @pages, *1..5, 16, *24..27 in rubyesque | ||
15:32
kst left
|
|||
pmichaud | not that we never flatten ever | 15:32 | |
timotimo | i must admit, yesterday (or whenever that was) was the first time i understood the "rubyish" pun. | 15:33 | |
TimToady | well, if you have a flattening context, then people are going to want to defined functions that can use it | ||
[Coke] | m: map {.say}, (1,(2,3,(4,5,(6,7)))) | ||
TimToady | and we re-invent slurpies | ||
camelia | rakudo-moar 0dcd0d: OUTPUT«(timeout)» | ||
pmichaud | It's probably way too late/radical to do this, but part of me was thinking yesterday that *@arg should be a non-flattening slurpy and **@arg should be the flattening one. | ||
[Coke] | ^^ that flattens all the way down. why not only the first level? | ||
TimToady | we should get that to say Mu instead | ||
pmichaud | [Coke]: because flattening all the way down is fairly common, especially in the case of lists-of-lists being built up by operators and returned list values | 15:34 | |
[Coke] | so why have lists of lists? | ||
why not just have every list be one level? | 15:35 | ||
TimToady | because parens in that context are important for grouping for lots of other purposes than just sublisting | ||
FROGGS | timotimo: can you explain that pun to me? | ||
pmichaud | [Coke]: that sounds like "flatten everywhere" | ||
masak | [Coke]: are you sure you're not thinking of arrays? to me, it's a simple rule that () tends to flatten but [] tends not to. | ||
timotimo | FROGGS: try pronouncing the u more like an english "a" | ||
[Coke] | I'm taking your argument to the extreme. :) | ||
timotimo | and tighten the "yi" into a single "i" | ||
FROGGS | timotimo: ahh *g* | ||
timotimo | :D | ||
FROGGS | hehe | 15:36 | |
pmichaud | [Coke]: Oh. "Flatten everywhere" is bad because we lose important grouping information that often wants to be preserved. | ||
masak | timotimo: I've heard many Slavic-speakers pronounce "Ruby" that way | ||
pmichaud | but that doesn't mean that "flatten nowhere" is the only answer. | ||
TimToady | pmichaud: IT HAS TO BE ALL OR NOTHING!!!! | ||
:) | |||
[Coke] | pmichaud: but you're saying that the default is to lose importanting grouping information that I want to preserve. | 15:37 | |
masak | timotimo: which surprises me now that I think about it, because they can say "Ryobl" (name of currency) just fine | ||
[Coke] | masak: Trying to test that, but the default stringification vs. .gist is annoying me again. one moment. | ||
masak | [Coke]: if you want to preserve it, then don't use () | ||
TimToady | [Coke]: only in the spots where that is unlikely to be the desired behavior, on average | ||
people pushing onto a flat array are very likely to want the list flattened | 15:38 | ||
[Coke] | then please explain why it's desired. :) | ||
TimToady is tired of explaining that | |||
timotimo | masak: kind of like a german would pronounce "rabbi"? | ||
[Coke] | I will be happy with documentation. | ||
TimToady | no you won't! :P | ||
[Coke] | TimToady: I was thinking pmichaud ^H. | ||
masak | timotimo: right. | 15:39 | |
TimToady | gotta go carry groeries... | ||
timotimo | masak: definitely curious | ||
masak | hm, "Ryubl" comes closer to the pronunciation. | ||
pmichaud | [Coke]: functions like "sort", "push", "grep", etc. seem to me to want to flatten. Perhaps it's just my p5 background, but if I have sort @left, @middle, @right I kind of expect it to sort the elements of those arrays for me. | ||
same if I do elems @a, @b -- I expect @a + @b and not "2". | 15:40 | ||
15:41
zakharyas left
|
|||
pmichaud | but that's also my unix background speaking, as well. | 15:41 | |
sort file1 file2 file3 flattens and sorts | 15:42 | ||
[Coke] | but depending on the type of thing in @a or @b, you might flatten all the way down, yes? | ||
pmichaud | if @a and @b aren't arrays, then yeah, it could flatten all the way down. | ||
the Array type only ever flattens one level down. | 15:43 | ||
japhb | I saw I got highlighted, but the backlog is even more huge than usual. Was my opinion sought or merely referenced? | 15:45 | |
pmichaud | japhb: referenced | ||
japhb | OK | ||
pmichaud | japhb: /last japhb 5 | ||
timotimo | yup. we said you were in the "never flatten implicitly" camp | ||
pmichaud | japhb: or /last japhb 10 by now :) | ||
japhb | pmichaud: Ah, nice command, thanks | 15:46 | |
pmichaud | I use it often when I've been highlighted to quickly find the location of the highlight. :) | 15:47 | |
15:47
erkan joined
15:48
pecastro left
15:49
camelia left,
immortal left
|
|||
japhb | timotimo: To be clear, my view was a tad more nuanced than that. But to a first approximation, I had voiced a desire for not-flatten to be the default in many cases, with flatten being a one-character request. And in particular, for things that can be done as both a listop and a method (map ... versus (...).map), I prefered the listop to flatten more than the method call. | 15:50 | |
timotimo | tbh i prefer weechat's ctrl-r backwards search, because it still gives you the ability to read as little or much of the context as you like | ||
japhb | (Or perhaps, for the method call to flatten less than the listop, depending on how you look at it.) | ||
pmichaud | japhb++ # apologies if I misrepresented your position | ||
japhb | No worries at all, pmichaud . | ||
timotimo | japhb: i intentionally almost-misrepresented your position so that you could give a much more exact description. so thanks! :) | 15:51 | |
you played right into my hands | |||
japhb | Heh. | ||
TimToady likes to play | 15:52 | ||
japhb fears the drink refered to as "Green Monster" on the breakfast menu, containing: Kale, Avocado, Spinach, Almond Milk, Apple Juice, Agave Nectar | 15:53 | ||
[Coke] | sounds nummy | ||
japhb | Sounds unnecessarily healthy. ;-) | 15:54 | |
pmichaud | japhb: It's evil. My body is convulsing just thinking about it. | ||
japhb | heh | ||
pmichaud | I'm okay with the Apple Juice and Agave Nectar, though. | ||
almond milk is passable as well | |||
japhb | That much we can agree on. :-) | ||
15:55
camelia joined
|
|||
pmichaud | "avocado" and "drink" don't square with me. | 15:55 | |
japhb | bus stop & # To breakfast! | ||
Ditto | |||
afk for real | |||
FROGGS | well, Spinach + Drink is just odd | ||
15:55
pecastro joined
|
|||
colomon | Kale + Drink is normal!?! | 15:55 | |
FROGGS | what's Kale? | 15:56 | |
jnthn | Spinach? Drink?! | ||
pmichaud | I often have physical reactions to spinach that mean I have to "tread carefully" | ||
(drink or otherwise) | |||
15:56
ChanServ sets mode: +v camelia
|
|||
FROGGS now goes home and hopes to work more on line seps | 15:56 | ||
colomon | FROGGS: en.wikipedia.org/wiki/Kale | ||
FROGGS | ohh, I don't usually drink that :o) | 15:57 | |
pmichaud | and Kale just means I'm going to feel quite icky a few hours later. | ||
15:58
FROGGS[mobile] joined
|
|||
TimToady | so it's really Kale Juice, Avocado Juice, Spinach Juice, Almond Juice, Apple Juice, and Agave Juice | 16:00 | |
why can't things be more consistent? | |||
masak | :P | ||
pmichaud | perhaps it's really juice <Kale Avocado Spinach Almond Apple Agave> | ||
masak .oO( this juice is strangely consistent... ) | |||
TimToady | strange consistently... | 16:01 | |
pmichaud | not sure if the "juice" operation was applied to ingredients as a whole or to each individual ingredient :) | ||
TimToady | it's a slurpy | ||
pmichaud | 7-eleven is based here in the DFW, their lawyers may be contacting you shortly. | ||
TimToady | lol | 16:02 | |
pmichaud | s/the// | ||
TimToady | .oO(ir lawyers?) |
16:03 | |
pmichaud | I didn't :g ! | ||
TimToady | <g> | ||
pmichaud | (and for those missing the reference: en.wikipedia.org/wiki/Slurpee ) | ||
TimToady | and they'll also sue me for misspelling it :) | 16:04 | |
16:04
FROGGS left
|
|||
pmichaud | "Manitoba was crowned the Slurpee Capital of the World for the fourteenth year in a row in 2013." | 16:05 | |
That combines all sorts of SCARY thoughts. | |||
TimToady | thankfully, I only flew over Saskatchewan | 16:06 | |
well, and Alberta and BC | |||
he said provincially... | |||
pmichaud | okay, lunchtime here. bbl | ||
16:06
isBEKaml joined
16:07
kaleem joined
|
|||
[Coke] | ... I forgot to lunch. | 16:08 | |
colomon is running out to fetch noms for $wife | 16:10 | ||
japhb | Awww, this omelet isn't nearly as good without onions (they ran out) | 16:17 | |
16:22
kaleem left
16:23
FROGGS joined
|
|||
TimToady | m: my \l = (1,2,3).list; l.plan: 4..*; say l[^10]; # re irclog.perlgeek.de/perl6/2014-10-15#i_9513771 and following | 16:25 | |
(works locally) | |||
camelia | rakudo-moar 93fe76: OUTPUT«(timeout)» | ||
[Coke] | anyone else having trouble building the core setting on the jvm? | ||
TimToady | so we already have a lazy list concat | ||
albeit in mutatating form | 16:26 | ||
moritz | \o | ||
TimToady | that word has a mutatation | ||
japhb | o/ moritz | 16:27 | |
16:29
Hor|zon left,
rurban left
16:30
FROGGS[mobile] left
|
|||
geekosaur | I thought amino acid repeats usually came in 3s :p | 16:31 | |
TimToady | well, it's tata for now :) | 16:33 | |
16:35
ajr_ left
16:37
fhelmberger left
|
|||
[Coke] | I am running out of memory building the core setting. | 16:46 | |
(on jvm). | |||
16:47
ghostlines left
|
|||
TimToady | PerlJam: re irclog.perlgeek.de/perl6/2014-10-16#i_9518871 it's called "ins" because there's no guarantee that the input separator is actually separating lines | 16:51 | |
16:53
[Sno] left
16:55
isBEKaml left,
Hor|zon joined
16:56
FROGGS[mobile] joined
16:59
aindilis joined
17:02
Hor|zon left
|
|||
timotimo | should we turn a for ^(something) into a while loop like we do for ^constant_here? | 17:05 | |
with a constant in there we can already emit a native int if we know the range won't reach big integer territory | 17:06 | ||
in the other case we can just assume "big int is necessary" | |||
17:11
Mso150_x joined
|
|||
masak | makes sense, I think. | 17:11 | |
timotimo | except of course that stuff is going to be much more performant post-GLR | 17:12 | |
i'd actually love something like @list.kv -> $a, $b and @foo Z @bar and @foo X @bar to be "unsugared" in the optimizer to give much more performant code without sacrificing proper behavior ... | 17:13 | ||
17:13
Mouq joined
17:14
grettis joined
|
|||
japhb | I would assume you could only get a gain out of that if you could prove @foo and @bar where finite and reified (Array or a subclass, for example) | 17:19 | |
[Coke] | tools/build/Makefile-JVM.in - needs to be updated; 1000m is apparently no longer big enough, at least for me. | 17:24 | |
doubling it to -Xmx2000m worked for me. | |||
anyone object to me bumping it? | |||
17:27
FROGGS[mobile] left
|
|||
pmichaud | please don't do a lot of for-like optimizations until *after* the GLR | 17:31 | |
every optimization is just another hurdle to be overcome in the conversion. | |||
(and often the optimizations make or introduce assumptions that are no longer correct after the refactor) | |||
17:31
Mso150_x_h joined,
Mso150_x left
|
|||
pmichaud | [Coke]: +1 from me, although I don't know all of the ramifications of that. | 17:32 | |
timotimo | pmichaud: understood | 17:33 | |
pmichaud | TimToady: (.plan and concat) as implemented it makes the invocant eager. | 17:34 | |
dalek | kudo/nom: 6be4a4d | coke++ | tools/build/Makefile-JVM.in: Bump up memory required to build rakudo-j (2000 may be too high, but 1000 is definitely too low) |
||
TimToady | nodnod | ||
[Coke] | lizmat: ^^ let me know if that impacts you. | 17:35 | |
TimToady | but that's 'cause I couldn't easily figger out how to have a list of plans | ||
pmichaud | where I've needed the concat capability is for things like Z, that ought to be lazy (and non-mutating of existing lists) | ||
TimToady | anyway, yeah, .plan was just an initial whack at it | 17:36 | |
pmichaud | creating a non-mutating .concat is itself fairly trivial, I can do that already. I just want to know what the canonical syntax should be, not how to implement it. | 17:37 | |
TimToady | I know, let's use infix comma for that :P | 17:38 | |
pmichaud | how about a lazy comma? infix:<,,> :-P | ||
TimToady | druther have something that looks more like a list infix than a mistake :) | ||
pmichaud | I mean, we really ought to have a Texas comma. | ||
just because. | 17:39 | ||
[Coke] | => ! | ||
TimToady | ❟ | ||
17:41
[Sno] joined
|
|||
masak .oO( we used to have a Texas comma, until it ceded from the rest of the Perl 6 operators ) | 17:41 | ||
pmichaud | .u ∾ | ||
yoleaux | U+223E INVERTED LAZY S [Sm] (∾) | ||
huf | texas comma? | ||
masak | huf: an ASCIIish way to spell the normal Unicode comma. | 17:42 | |
pmichaud thinks that "INVERTED LAZY S" would make a great name for a ranch. | |||
huf | masak: sorry, that explanation just confused me even more :( | ||
masak | huf: :P | ||
masak is evil | |||
TimToady | chaotic evil, even | 17:43 | |
masak .oO( chaotic evil, odd! ) | |||
[Coke] | TimToady: raw.githubusercontent.com/coke/fam...png/gy.png | ||
TimToady | that's, like, the tiniest flag evar | 17:45 | |
[Coke] | yes, but it looks like an arrow. :) | 17:46 | |
(need the small country flags for lots of web apps I work on) | |||
TimToady | so it's your fault! | 17:47 | |
[Coke] | sur..e? | 17:49 | |
er, suuuuure? | |||
rjbs had the chance to register pig.gy and squandered it. | 17:59 | ||
[Coke] | rjbs: NOOOOO! | 18:01 | |
PerlJam | TimToady: "ins" makes sense, but it seems like one of those things that will have to always be explained to people. i.e. it's a little obscure. | 18:02 | |
masak | PerlJam: it was the end point of a long sequence of worse suggestions. | 18:03 | |
PerlJam: doesn't mean there isn't a yet better one, though. | |||
PerlJam | I tend to think of "lines" as records and ins would be more like "record-number" or some such. | 18:07 | |
18:08
kjs_ left
|
|||
PerlJam | But, if "ins" and "outs" fit within a larger conceptual framework for explaining Perl 6, then it'll just be one of those things people have to learn :) | 18:08 | |
FROGGS | PerlJam: it is not yet too late to come up with something better, me thinks :o) | 18:09 | |
PerlJam: note that this also has to apply to streams | |||
timotimo | o/ | 18:10 | |
FROGGS | m/ | ||
pmichaud | and that monitoring an "outs" for record separators might be a little expensive. | 18:12 | |
timotimo | you could declare that you want to track outs and then using anything but ".get" and ".lines" would die | 18:13 | |
pmichaud confused. | 18:14 | ||
FROGGS | isnt .outs what you .print? | ||
timotimo | er | ||
oops | |||
derp. | |||
pmichaud | print "hello\nworld\n"; # how many .outs? | ||
FROGGS | depends on the separator :o) | ||
pmichaud | right, thus my comment "monitoring an 'outs' for record separat...." | 18:15 | |
timotimo | if it's \n it's 2, if it's l it's 3 ... | ||
PerlJam | timotimo: 4 if it's "l" | ||
pmichaud | ...and we have to scan every output string for record separators. | ||
timotimo | oh, mhh | ||
pmichaud | which we currently don't do, or come even close to do. | ||
timotimo | pmichaud: that can be done in a separate thread! %) | ||
jnthn | I think we might want to do this with a decorator pattern, NOT as a think you get in a default file handle :P | ||
FROGGS | thing* | 18:16 | |
PerlJam | unless we come up with a good name for a thing that keeps track of outs (like "write") and it's the only thing that does. | ||
jnthn | class IO::CountStuff { has $.handle handles *; ...override stuffs... } | ||
Or something :) | |||
jnthn should probably go buy some dinner :) | 18:17 | ||
bbiab | |||
pmichaud | scanning output for record separators isn't completely out of the question... but it's definitely something you'd like happening automatically at a low level, like at the VM level. | 18:18 | |
and a lot of VMs won't have it built-in | |||
18:19
spider-mario joined
|
|||
timotimo | what, jvm doesn't have System.OutCount? :P | 18:20 | |
18:21
spider-mario left
|
|||
dalek | rl6-roast-data: a63ca00 | coke++ | / (5 files): today (automated commit) |
18:21 | |
18:24
spider-mario joined
18:31
Mouq left,
pepl joined
|
|||
jnthn | pmichaud: Oh, curious, I had the opposite intuition: implement it once at high level, but make it something you opt in to. It should only be a case of some index operations and increments, then a delegation. Which I'd hope can be pretty fast. :) | 18:41 | |
nine_ | Coke: Set the environment variable MAKEFLAGS to "-j 8" | 18:49 | |
18:49
Mouq joined
|
|||
moritz | jnthn: well, it gets a bit more complicated if you count multi-char separators over several print operations | 18:50 | |
timotimo | i am pleased to report: | ||
moritz | separator = 'ab' print 'xa'; print 'bc' | ||
timotimo | my $foo = 0;for ^10_000_000 -> $a { $foo = $a // 5 } | ||
my $foo = 0;for ^10_000_000 -> $a { $foo = $a.defined ?? $a !! 5 } | |||
^- almost exactly the same speed | |||
like, minimal noise on the second digit after the comma | |||
18:53
Hor|zon joined
|
|||
jnthn | moritz: Urgh, true :) | 18:55 | |
nine_ | [Coke]: Set the environment variable MAKEFLAGS to "-j 8" | ||
18:56
Mso150_x_h left,
Mso150_x_h joined
18:59
Hor|zon left
|
|||
moritz | timotimo: is that due to an optimization you're implementing? | 18:59 | |
timotimo | no | 19:00 | |
it's already that way, probably due to spesh and/or inlining | 19:01 | ||
inlining as in: QAST-level inlining) | |||
:) | |||
jnthn | Could be spesh-level inlining too :) | 19:02 | |
I suspect .defined gets inlined in both cases. | |||
timotimo | sometimes i get positively surprised by rakudo performance nowadays | ||
makes me hopeful for the future | |||
moritz | yes, it's much less abysmal than it used to be :-) | 19:03 | |
19:04
Mso150_x_h left
19:05
slavik left,
Mso150 joined
19:06
jdj is now known as j4jackj
19:07
Mouq left
|
|||
dalek | rlito: 38cd1da | (Flavio S. Glock)++ | / (2 files): Perlito5 - parser - add "=encoding" pod command |
19:08 | |
19:09
Mouq joined
19:14
noganex left
|
|||
bartolin | j: say "are you there?" | 19:15 | |
camelia | rakudo-jvm 93fe76: OUTPUT«(timeout)» | 19:16 | |
bartolin | I've found the following NullPointerException with perl6-j: | ||
$ perl6-j -e "sub foo { EVAL 'role R { }' }; foo;" | 19:17 | ||
===SORRY!=== | |||
java.lang.NullPointerException | |||
19:17
kurahaupo joined
|
|||
psch | bartolin: backtrace with jdb might be useful | 19:17 | |
bartolin | that bites us when using "eval_lives_ok" with such code :( | 19:18 | |
19:18
slavik joined
|
|||
bartolin | psch: I'll take a look, mom | 19:18 | |
psch | there should be a perl6-jdb-server, but you probably want to change -suspend=n to -suspend=y | ||
inside perl6-jdb-server | |||
and attach with jdb -attach $port | |||
bartolin | I haven't used that before, but I'm looking | 19:19 | |
19:19
kst` is now known as kst,
pepl left
19:21
xfix_ joined,
Hor|zon joined,
xfix_ is now known as xfix
|
|||
psch | bartolin: i think -source wants to point towards nqp/src/vm/jvm/runtime | 19:22 | |
and then just catch NPE and see where it takes you | 19:23 | ||
bartolin is a bit lost | |||
okay, it will take a bit longer ;-) | 19:24 | ||
19:26
Hor|zon left
|
|||
timotimo | welp | 19:27 | |
with --ll-exception we wouldn't get far, aye? | |||
psch | ...right, that might have been the more sensible first step | 19:28 | |
timotimo | well, if we have an NPE ... | ||
bartolin | okay, that gives some more lines. I'll pastebin it in a moment. | 19:29 | |
psch | timotimo: it still might point towards something that could be related i think | ||
although details are probably inside jdb somewhere | |||
bartolin | pastebin.com/CKCBpyJ8 | ||
psch | maybe again broken outer chain? | 19:31 | |
similar to that one thing i had found a few months back which was gone a few weeks back | |||
note, i don't know how it was fixed :) | 19:32 | ||
19:32
pepl joined
19:35
darutoko- left
|
|||
timotimo | psch: i'd be a bit surprised if we get a stack trace at all | 19:35 | |
from such a low-level exception | |||
19:36
noganex joined
|
|||
psch | timotimo: bartolin++ pasted a trace? :) | 19:36 | |
bartolin | Hmm, I got only the following. but it's very likely that I didn't do the right thing: | ||
Exception occurred: java.lang.NullPointerException (to be caught at: 64411D3B4B0DBD5895A2F295CC3F75570C8D73C2.qb_54(), line=1,497 bci=2,686)"thread=main", org.perl6.nqp.runtime.Ops.getobjsc(), line=3,811 bci=1 | |||
I attached with jdb -sourcepath nqp/src/vm/jvm/runtime -attach $port and did "catch java.lang.NullPointerException" first and then "run" | 19:38 | ||
Should I file a rakudobug? | 19:39 | ||
bartolin knows the answer to this question ... | |||
psch | bartolin: 'up' inside jdb should show you were this came from. from the looks of it the obj we want the sc from is NULL | 19:41 | |
i have no idea how/why this happens, i'm just telling you what i found out about debugging perl6-j when i tried it... | |||
but filing a rakudobug is definitely a good thing | 19:42 | ||
19:42
flussence left
|
|||
bartolin | "up" doesn't show anything :/ (only switched from "main[1]" to "main[2]) | 19:43 | |
19:43
flussence joined
|
|||
psch | 'list' again | 19:43 | |
timotimo | well, that's good :) | ||
bartolin | okay, I'll write the bug report. I found that after a test for perl6-j failed with eval_lives_okay but run fine with lives_okay. | 19:44 | |
psch: "list" only gives: Source file not found: src/Perl6/World.nqp | 19:45 | ||
should I add more directories to -sourcepath? | 19:46 | ||
psch | bartolin: then what timotimo++ said seems to apply i think. the NPE happens atomically for getobjsc for a role in EVAL | ||
at least that's how i understand it | |||
i don't think jdb understands .nqp files | 19:47 | ||
i haven't tried though | |||
bartolin | okay, thanks for leading me through this ;-) | ||
nine_ | I implemented threading in Parrot, brought Perl 5 back into Perl 6, wrote Inline::Python just for fun and here I struggle...implementing an ordinary image upload in Javascript | 19:48 | |
psch | $ ./perl6 -e'say @*ARGS' -e'say "nothing"' | 19:49 | |
-esay "nothing" | |||
\o/ | |||
unfortunately, 'make spectest' still hangs indefinitely. it even kills the shell it's run in | 19:50 | ||
s/kills/somehow borks/ | |||
it doesn't respond in any way, only killing the process from the outside works | |||
the shell, that is | |||
timotimo | nine_: heh :D | 19:52 | |
nine_: completely different levels in the layer cake, could that be it? | |||
psch | i'm pretty sure it's javascript | ||
timotimo | well ... yeah maybe | 19:54 | |
psch | ;) | ||
nine_ | On the other hand, doing Javascript nowadays is very nice compared to the bad old times. Draging a couple images into your browser window and have them uploaded to a server with nice progress indication? No way to have that back then. | ||
moritz | nine_: "firebug". 'nough said. | 19:55 | |
timotimo | aye :( | 19:56 | |
nine_ | success :) | 19:58 | |
moritz | maybe I was just unaware of better tooling back then, but I had trouble even getting an error message from javascript. much less a backtrace | ||
19:59
Hor|zon joined
|
|||
nine_ | Backtraces are a rather recent addition to Javascript | 19:59 | |
Note to self: a 12150x6075 image might be a bit much for these tests... | 20:00 | ||
flussence | but... Konqueror *3* had file upload progress statusbars. Firefox just didn't bother implementing them for years :( | ||
masak | 'night, #perl6 | ||
PerlJam | masak: Sleep well! | 20:01 | |
20:03
Hor|zon left
|
|||
timotimo | gnite masak! | 20:04 | |
[Coke] | psch: what OS/backend are you running where teh spectest hangs? | 20:12 | |
today's daily run will finally include java again. | 20:13 | ||
psch | [Coke]: i'm on 32bit moar, this is with my branch for better cli option parsing though | ||
i'm fairly confident that my changes are somehow responsible... :) | |||
bartolin | bug report about NullPointerException submitted: RT #123002 | 20:15 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123002 | ||
timotimo | success, a letterbox! | 20:17 | |
[Coke] | bartolin: how did you give it TWO bug tags? | 20:18 | |
20:19
Mouq left
|
|||
bartolin | [Coke]: errm, I wrote [BUG] in the subject _and_ marked "Bug" in the dropdown menu ;-) I'll try to get rid of one of them. | 20:20 | |
moritz | Bug² | ||
bartolin | [Coke]: it's better now ;-) | ||
20:23
rindolf left
|
|||
timotimo | someone want to tackle this bug? | 20:25 | |
m: my Num $foo = 1; | |||
p: my Num $foo = 1; | |||
breaks only on MoarVM, is the gist of it. | 20:26 | ||
camelia | rakudo-moar 93fe76: OUTPUT«(timeout)» | ||
rakudo-parrot 93fe76: OUTPUT«(timeout)» | |||
PerlJam | timotimo: maybe the bug is that it works on parrot ;) | 20:28 | |
timotimo | well, on moar we seem to be using "assign" to put the number into the variable | 20:29 | |
i don't have a rakudo-p handy to figure out what exact op it emits | |||
20:30
baest left,
baest joined
|
|||
timotimo | i haven't looked at the MAST Compiler in a long time ... but maybe the difference is somewhere in the actions instead? | 20:31 | |
20:35
FROGGS left,
rurban joined
20:44
spider-mario left
20:56
cognome joined
|
|||
psch | aha! jakudo doesn't become catatonic when trying to run roast with my branch, instead it errors out on every file! | 20:57 | |
progress! | |||
20:59
pepl left
|
|||
timotimo | cool :) | 21:00 | |
dalek | ast: 741b08e | usev6++ | integration/advent2012-day14.t: Unfudge no passing tests for rakudo.jvm, RT #121802 |
21:02 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121802 | ||
21:13
rurban left,
gfldex joined
21:21
prevost joined,
njmurphy left
21:23
j4jackj left
21:24
_slade_ joined,
treehug88 left
21:28
prevost left
21:35
Mouq joined
21:56
cognome left
21:57
cognome joined
22:00
Hor|zon joined
22:01
cognome left,
_slade_ left
22:05
mahmoud joined,
Hor|zon left,
mahmoud is now known as Guest42371
22:08
guru joined,
guru is now known as Guest38359,
Guest38359 is now known as ajr_
22:12
Guest42371 left
|
|||
psch sleep & | 22:16 | ||
22:20
psch left
22:23
Hor|zon joined
22:28
camelia left
22:29
Hor|zon left
22:33
camelia joined
22:34
ChanServ sets mode: +v camelia
22:36
bartolin left
22:39
kjs_ joined
22:45
erkan left
23:09
BenGoldberg joined
23:10
flussenc1 joined,
flussenc1 left
23:19
gfldex left
23:25
xenoterracide_ joined
23:37
kjs_ left
23:46
Mso150 left
23:48
xenoterracide_ left
23:49
xenoterracide_ joined
23:51
Mouq left
23:52
Mso150 joined
|