»ö« 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/aM8hlGQheX␤Unable 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.pdf␤file2.mp3␤file3.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/cQOCWPzX4u␤Cannot use placeholder parameter $^file in the mainline␤at /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.pdf␤file2.mp3␤file3.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/ib8Ovl9tPi␤Cannot negate xor because it is not iffy enough␤at /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 ~~⏏ True␤2True␤»
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