»ö« 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.
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
raydiak m: (grammar{ token foo{.*}; token TOP{<@( token{<foo>} )>}; }).parse: '' 04:01
raydiak m: (grammar{ token foo{.*}; token TOP{<@( token{<foo>} )>}; }).parse: '' 04:03
raydiak p: say 1 04:04
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)»
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
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
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
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
TimToady -> zzz & 06:08
raydiak good idea...g'night #perl6 06:08
masak g'morning, #perl6 07:06
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
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
masak moritz: in Asia, strings of ~ seem to indicate excited/shaky voice: "wow, how exciting~~~~~" 07:16
Ven helo, #perl6 07:21
FROGGS hi Ven 07:22
masak ehlo, Ven 07:36
lizmat #perl6! o/ 07:38
masak \o/ 07:41
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
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
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
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*
Ven dilemna, dilemna: <<~>> + <<~>> or (X~) + Z~ ? 08:12
masak hm. neither? :) 08:13
moritz those don't look equivalent to me 08:18
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?
Ven masak: @files <<~>> '.' <<~>> @exts; vs (@files X~ '.') Z~ @exts 08:23
moritz: ^ they're equivalent 08:25
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
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
Ven .say for map {"$^file.$^xt"}, (@files Z @exts) 08:38
say @files <<~>> '.' <<~>> @exts
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
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/
&
FROGGS Ven++ # "yer a cheater, harry" 09:24
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
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
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
dalek rlito: 1f529de | (Flavio S. Glock)++ | / (2 files):
Perlito5 - fixed assignment of special variable in list context: ($^W) = 3
11:36
colomon OO::Actors failed the smoke test overnight? 11:37
jnthn Hm, did it pass the smoke test since I added it? 11:41
I know the tests passed on my box...
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
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
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
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
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
mauke hmm, no 13:22
moritz m: my $x = 42; say $x.so === True
camelia rakudo-moar 0dcd0d: OUTPUT«True␤»
mauke Ulti: when do you need that? 13:23
Ulti well I just showed something I would expect to be a boolean comparisson but it wasn't 13:23
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
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
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
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
[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
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
Ulti but yeah bad code is bad, just felt like if you have warnings for ~~ might be worth mentioning elsewhere 13:53
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
TimToady Haters gonna hate, coders gonna code... 13:59
psch hi #perl6 \o 14:10
m: say "True" ~~ .Bool
camelia rakudo-moar 0dcd0d: OUTPUT«True␤»
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
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 はい!
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
smls Hi 14:48
Congrats to everyone involved on getting the GLR started!
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
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...
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?
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
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.
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.
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
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
lizmat smls: have you seen pmthium.com/2014/10/apw2014/ ? 15:11
pmichaud o/
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
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.")
smls [Coke]: Without flattening, there's wouldn't be much justification left to have different sigils. 15:15
TimToady list interpolation is nearly as important as string interpolation 15:16
[Coke] you must use arrays differently than I do. :)
[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
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
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
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.
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
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
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
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. :-)
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
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)
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.
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
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
[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
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
geekosaur I thought amino acid repeats usually came in 3s :p 16:31
TimToady well, it's tata for now :) 16:33
[Coke] I am running out of memory building the core setting. 16:46
(on jvm).
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
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"
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
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?
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)
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
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
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
timotimo what, jvm doesn't have System.OutCount? :P 18:20
dalek rl6-roast-data: a63ca00 | coke++ | / (5 files):
today (automated commit)
18:21
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
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
jnthn moritz: Urgh, true :) 18:55
nine_ [Coke]: Set the environment variable MAKEFLAGS to "-j 8"
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
dalek rlito: 38cd1da | (Flavio S. Glock)++ | / (2 files):
Perlito5 - parser - add "=encoding" pod command
19:08
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
psch bartolin: backtrace with jdb might be useful 19:17
bartolin that bites us when using "eval_lives_ok" with such code :( 19:18
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
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
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
timotimo psch: i'd be a bit surprised if we get a stack trace at all 19:35
from such a low-level exception
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
bartolin "up" doesn't show anything :/ (only switched from "main[1]" to "main[2]) 19:43
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
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
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
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 ;-)
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
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
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!
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
psch sleep & 22:16