»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
colomon TimToady: Happy Birthday! 01:26
timotimo already caught a glimpse of a partially darkened and partially reddened moon 02:09
Zoffix can't due to clouds so they are watching Slooh telescope online: 02:16
www.youtube.com/watch?v=wgv0Z8Q2OIQ
timotimo Live Streaming is not available in your country due to rights issues. 02:34
dalek rl6-roast-data: d5cc33c | coke++ | / (9 files):
today (automated commit)
02:45
kudo-star-daily: e1a9dfe | coke++ | log/ (9 files):
today (automated commit)
[Coke]_ RT: 1,028; testneeded: 9; GLR: 4; WEIRD: 12; LTA: 81; xmas: 98 03:00
[Tux] test 50000 35.708 35.606 07:03
test-t 50000 36.133 36.030
tux.nl/Talks/CSV6/test-t.jpg 07:05
jdv79 what's the "good enough" again? 07:07
[Tux] jdv79, that was a question directed to me? 07:17
FROGGS I'd guess so 07:22
my gut feeling is that 25s would be "quite awesome" for rakudo, but in the end we want to get down to at least 10s to be competitive at all 07:23
[Tux] agrees 07:24
jdv79, note that the perl5/XS time for the same code is 0.016 seconds
FROGGS jdv79: if you feel the urge, you could profile it to get a feeling for the slow parts... 07:30
masak [Tux]++ # relentless benchmarking 09:05
moritz any objections to rejecting rt.perl.org/Ticket/Display.html?id=126208 ? 09:10
jnthn moritz: Seems it does indeed close the channel too early (before waiting on the promises) 09:16
an await @promises before the .close for ... should help, I think
moritz ok, ticket rejected. 09:22
emilbarton hello, I've worked hard to isolate the error I met yesterday. And I come with an 8 lines script that will allow to easily understand my problem with regex match (either : Cannot assign to a readonly var, or Cannot modify an immutable cursor). I've dropped a gist : gist.github.com/emilbarton/7d6671529b0fd6d90423 . Thank you very much for your explanations. 09:29
jnthn sees if he can work out how the weird .new regressions happened
m: Slang.new # this one
camelia ( no output )
jnthn Oh, what, it works now?
m: say StrDistance
camelia rakudo-moar 1ed1ea: OUTPUT«-> { #`(Block|73197096) ... }␤»
jnthn Ah, that doesn't though 09:29
moritz emilbarton: ah, it seems to be !~~ that's the problem 09:30
m: say 'abc' !~~ /(a)/
camelia rakudo-moar 1ed1ea: OUTPUT«False␤»
emilbarton moritz no!
ShimmerFairy jnthn: I noticed that nqp::tc() titlecases everything in the string, while Str.tc does just the first character. Come to think of it, nqp's behavior is more consistent, but surprising where I was expecting the current P6 behavior :) 09:31
emilbarton I get the same with ~~ but I wanted KO
ShimmerFairy I keep forgetting nqp: kills camelia e_e 09:31
|Tux| did anyone look at the panda list fail? 09:37
panda list --installed --verbose
jnthn ShimmerFairy: I thought it was tclc?
(in Perl 6)
ShimmerFairy m: say "foobar".tc 09:38
camelia rakudo-moar 1ed1ea: OUTPUT«Foobar␤»
ShimmerFairy jnthn: no, but admittedly it makes far more sense to be consistent with .uc and .lc
jnthn m: say "Foobar".tclc
camelia rakudo-moar 1ed1ea: OUTPUT«Foobar␤»
jnthn huh, both exist
ShimmerFairy m: say "fooBar".tc; say "fooBar".tclc
camelia rakudo-moar 1ed1ea: OUTPUT«FooBar␤Foobar␤»
ShimmerFairy jnthn: the difference is that .tc doesn't lowercase the rest. 09:38
ShimmerFairy admittedly, I think .tc titlecasing every character would be more sensible. 09:39
dalek osystem/cookie-baker: 798d3ef | (Tokuhiro Matsuno)++ | META.list:
Added Cookie::Baker
09:39
jnthn It's really taking some work to even track down what introduced the weird symbol mis-compile regression 09:50
FROGGS jnthn: the Pandabug? 09:56
jnthn FROGGS: No idea 09:59
m: say StrDistance
camelia rakudo-moar 1ed1ea: OUTPUT«-> { #`(Block|71853608) ... }␤»
jnthn star: say StrDistance
camelia star-m 2015.03: OUTPUT«(StrDistance)␤»
FROGGS ohh
jnthn That one is an example of it
FROGGS what the
jnthn Yes, it's utterly weird
jnthn It seems that occasionally a WVal ends up pointing to the totally wrong thing o.O 10:00
jdv79 sounds like fun 10:02
jdv79 or at least not boring 10:03
lizmat good *, #perl6!
jdv79 lizmat: mornin 10:03
lizmat jdv79 o/ 10:03
jdv79 oh, aft now
lizmat jnthn: as another datapoint: when I we speeding up .min and .max last night 10:04
at one point the setting could not build the RESTRICTED setting anymore
ah, nvm, figured out it was my fault after all 10:05
m: my $a; sub b(\c) { c := 42 }; b $a # this was the problem 10:06
camelia rakudo-moar 1ed1ea: OUTPUT«5===SORRY!5=== Error while compiling /tmp/AB7s51bdpY␤Cannot use bind operator with this left-hand side␤at /tmp/AB7s51bdpY:1␤------> 3my $a; sub b(\c) { c := 42 7⏏5}; b $a # this was the problem␤»
jnthn Yeah, you can't bind do that :)
*to
lizmat well, actually trying to throw that error :-)
jnthn It's REALLY weird. I've got my Moar and NQP builds back basically to the last release.
And I still get it 10:07
lizmat
.oO( but you don't get it as well )
jnthn aha
bff29c4 bad, but 4653d98 good 10:08
jnthn e87794e good 10:13
jnthn And the patches between that and bff29c4 are just to the harness 10:14
ShimmerFairy jnthn: keep in mind that bff29c4 is a merge commit; did you check the other branch? 10:15
jnthn ShimmerFairy: The last good commit I posted was the last significant change in nom before the merge, so yeah, the branch is implicated 10:17
Currently building everything at HEAD but with the two patches from the branch reverted
ShimmerFairy jnthn: ok, just wanted to make sure you didn't accidentally miss it being a merge commit :)
jnthn Thanks for checking :) 10:18
ShimmerFairy (My guess is the change to the indent, not so much <.vws> -> \v )
jnthn Uh, with those reverted I still get oddness :S 10:20
grrr 10:21
jnthn What's really interesting is that StrDistance and Slang both come really near the end of CORE.setting 10:31
kolikov For : emilbarton ... seen on public logs at 9:10h ... maybe too late: interpolate varibles in regexes ... this way: $<varible> 10:33
lizmat jnthn: have you tried moving StrDistance up? if not, I could do that 10:39
just as another datapoint
jnthn lizmat: I've been looking at the SC indexes, and it looks like a 16-bit truncation issue...somewhere 10:40
lizmat that would be: yuck ? 10:41
jnthn Very
There's not that many places it could be though
FROGGS hmmm, I could imagine that something similar happened to panda too... 10:42
lizmat jnthn: as a confirmation: if I move StrDistance up a few lines in moar_core_sources, the restricted setting doesn't build with: Cannot look up attributes in a type object 10:44
dalek osystem: 798d3ef | (Tokuhiro Matsuno)++ | META.list:
Added Cookie::Baker
10:55
osystem: 142a500 | RabidGravy++ | META.list:
Merge pull request #60 from perl6/cookie-baker

Added Cookie::Baker
jnthn lizmat: Seems I've found it and have a fix 10:57
lizmat cool!
brrt \o/ 10:58
jnthn spectests
jnthn Some new win32-specific fails on POD-y/heredoc-y things wrt line endings, it seems 11:01
(Unrelated to my fix)
jnthn urgh, spectest is a real mess on Windows, thanks (I think) to heredoc changes leading to extra newlines all over on Windows 11:15
dalek p: c3a92ed | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for assembler overflow bugfix.
11:16
p: 1deb686 | jnthn++ | src/HLL/World.nqp:
A couple of native type annotations.

Should avoid some boxing.
kudo/nom: dd6c855 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for MoarVM assembler fix.

Resolves weird mis-compiles of things near the end of CORE.setting.
11:18
travis-ci NQP build passed. jnthn 'A couple of native type annotations. 11:20
travis-ci.org/perl6/nqp/builds/82534948 github.com/perl6/nqp/compare/3f2ad...eb6862ddf6
dalek ast: 347a9f9 | lizmat++ | S02-types/WHICH.t:
Test for 2 more classes' existence
11:26
grondilu notices that ctags now supports Perl6 www.perlmonks.org/?node_id=1137752 11:27
grondilu wonders if that helps browsing the core
lizmat wow, a clean spectest! haven't seen that in a while! 11:30
Files=1042, Tests=47028, 211 wallclock secs (12.32 usr 3.61 sys + 1395.44 cusr 128.19 csys = 1539.56 CPU)
moritz \o/ :/
moritz is glad the spectest is clean, and sad that it isn't the norm
lizmat so it would seem to me this bug was causing all sorts of other issues as well
jnthn There's still at least one known icky concurrency bug lingering that can cause flaps. 11:31
Thankfully there's a lot less of them than there used to be :)
lizmat indeed ! 11:32
lizmat goes back to writing Perl 6 Weekly 11:33
nine 16 bit overflow? I thought those times are long gone :)
lizmat let me know if you have anything you think *should* be in there!
FROGGS err, the ctags repo and website state that the project is about maintaining ctags.... but wth is ctags? 11:34
timotimo a collection of name-to-location links, more or less
nine "Ctags is a tool that makes it easy to navigate large source code projects. It provides some of the features that you may be used to using in Eclipse or other IDEs, such as the ability to jump from the current source file to definitions of functions and structures in other files." 11:35
courses.cs.washington.edu/courses/c...ctags.html
jnthn nine: You can easily recreate them by copy-pasto'ing a cast, apparenlty... :)
FROGGS aha
timotimo it lets you "jump to definition" as well as have a list/tree of symbols for the current file
nine Woah! It seems like this also fixes the panda problem! 11:35
I reverted the workaround in panda and perl6 bootstrap.pl still works 11:36
brrt what
that's impossible
timotimo huh? must be flappy!
brrt impossibru
timotimo inconceivable!
nine indeed :(
jnthn Yeah, there's a separate bug there, surely.
nine It _is_ flappy
jnthn Given how far we're hunted it down
nine Or rather it worked the first time and fails since 11:37
leont YAML keeps surprising me, so many edge-cases while implementing it􏿽x85 12:29
[Coke] hoelzro: if RT #126202 is the correct behavior, what's the ticket for?
moritz leont: iirc the YAML spec is longer than the XML spec :-) 12:33
leont Tell me about it! :-/
leont How can I express "not in between" in a rule? 12:33
moritz there's no good way 12:34
leont I guess I should first define an AND, and then add the NOT, but I'm not sure that's going to work :-s 12:35
moritz especially if you want to scope the "not in between" somehow
leont Not between "\n| and "..."
... is a valid plain scalar, except on the main scope where it terminates the document -_- 12:36
moritz <!after\n> <token> <!before $>
or since it's valid syntax, but different semantics, you could parse it normally, and make the distinction in the actions 12:37
lizmat updated gist.github.com/lizmat/28d6d9b8f3a968e6c92e # Perl 6 Weekly in progress 12:48
comments welcome! 12:49
moritz lizmat++ # my comment 12:50
[Coke] lizmat++ nice. 12:53
leont Think I solved my problem by special-casing the higher-level rule. Crude, but effective. 12:58
tony-o m: say (('x' x 4) ~ '-') x 3) 13:29
camelia rakudo-moar dd6c85: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gmyAnupxwU␤Unexpected closing bracket␤at /tmp/gmyAnupxwU:1␤------> 3say (('x' x 4) ~ '-') x 37⏏5)␤»
tony-o m: say ((('x' x 4) ~ '-') x 3)
camelia rakudo-moar dd6c85: OUTPUT«xxxx-xxxx-xxxx-␤»
carlin is there a way do "hash key exists and value equals..." as one statement? eg. a shorter `if %hash<foo> && %hash<foo> eq "baz" ...` 13:54
timotimo maybe %hash<foo>:exists:value 13:57
m: my %foo = a => 10; say %foo<a>:exists:value
camelia rakudo-moar dd6c85: OUTPUT«Unexpected adverb 'value' and unsupported combination of adverbs (exists) passed to slice on %foo␤ in block <unit> at /tmp/4vLwugAyZx:1␤␤Actually thrown at:␤ in block <unit> at /tmp/4vLwugAyZx:1␤␤»
timotimo m: my %foo = a => 10; say %foo<a>:exists
camelia rakudo-moar dd6c85: OUTPUT«True␤»
timotimo m: my %foo = a => 10; say %foo<a>:value:exists
camelia rakudo-moar dd6c85: OUTPUT«Unexpected adverb 'value' and unsupported combination of adverbs (exists) passed to slice on %foo␤ in block <unit> at /tmp/Om3FGVbMVj:1␤␤Actually thrown at:␤ in block <unit> at /tmp/Om3FGVbMVj:1␤␤»
timotimo m: my %foo = a => 10; say %foo<a>:kv:exists
camelia rakudo-moar dd6c85: OUTPUT«(a True)␤»
timotimo m: my %foo = a => 10; say %foo<a>:pair:exists 13:58
camelia rakudo-moar dd6c85: OUTPUT«Unexpected adverb 'pair' and unsupported combination of adverbs (exists) passed to slice on %foo␤ in block <unit> at /tmp/hUUbAaAbjn:1␤␤Actually thrown at:␤ in block <unit> at /tmp/hUUbAaAbjn:1␤␤»
timotimo m: my %foo = a => 10; say %foo<a>:pairs:exists
camelia rakudo-moar dd6c85: OUTPUT«Unexpected adverb 'pairs' and unsupported combination of adverbs (exists) passed to slice on %foo␤ in block <unit> at /tmp/PRCzRGZl10:1␤␤Actually thrown at:␤ in block <unit> at /tmp/PRCzRGZl10:1␤␤»
timotimo m: my %foo = a => 10; say %foo<a>:p:exists
camelia rakudo-moar dd6c85: OUTPUT«a => True␤»
timotimo not quite .. at all
tony-o m: my %a; say (%a.somekey // '') eq 'hello' ?? %a.somekey !! 'nope'; 14:03
camelia rakudo-moar dd6c85: OUTPUT«Method 'somekey' not found for invocant of class 'Hash'␤ in block <unit> at /tmp/QFjS6AeuqD:1␤␤»
tony-o m: my %a; say (%a<somekey> // '') eq 'hello' ?? %a.somekey !! 'nope'; 14:04
camelia rakudo-moar dd6c85: OUTPUT«nope␤»
tony-o too much javascript
m: my %a; say (%a<somekey> // '') eq 'hello' ?? %a<somekey> !! 'nope';
camelia rakudo-moar dd6c85: OUTPUT«nope␤»
tony-o m: my %a = somekey => 'sup carlin'; say (%a<somekey> // '') eq 'hello' ?? %a<somekey> !! 'nope';
camelia rakudo-moar dd6c85: OUTPUT«nope␤»
lizmat m: my %h = a => 42; dd %h<a>:v, %h<b> %h<b>:v 14:05
camelia rakudo-moar dd6c85: OUTPUT«5===SORRY!5=== Error while compiling /tmp/f1RSBpOnAU␤Undeclared routine:␤ h used at line 1␤␤»
lizmat m: my %h = a => 42; dd %h<a>:v, %h<b>, %h<b>:v
camelia rakudo-moar dd6c85: OUTPUT«42␤Any %h = Any␤()␤»
tony-o m: my %a = { somekey => 'sup carlin' }; say (%a<somekey> // '') eq 'hello' ?? %a<somekey> !! 'nope';
camelia rakudo-moar dd6c85: OUTPUT«Potential difficulties:␤ Useless use of hash composer on right side of hash assignment; did you mean := instead?␤ at /tmp/ArRDUb5zhb:1␤ ------> 3my %a = { somekey => 'sup carlin' }7⏏5; say (%a<somekey> // '') eq 'hello' ?? ␤nope␤»
tony-o meh, something like that
lizmat tony-o: I think :v is what you want, as it filters
leont How do I prevent flattening in 􏿽xAB@a.push: (1,2,3)􏿽xBB? 14:06
lizmat $(1,2,3)
leont Ah!
tony-o m: my @a; @a.push($(1,2,3)); @a.perl.say;
camelia rakudo-moar dd6c85: OUTPUT«[(1, 2, 3),]␤»
leont Yes that works much better :-)
lizmat m: my %h = a => 42; dd %h<a b>, %h<a b>:v
camelia rakudo-moar dd6c85: OUTPUT«(42, Any)␤(42,)␤»
lizmat tony-o: ^^^ 14:07
tony-o i was mostly just answering carlin 's inquiry about checking for a key existing and checking the value in one statement
i always use the ($var // Nil) or something similar 14:08
carlin ah that looks like what I want
m: my %h = a => "test"; if %h<a>:v eq "test" { say "it works"; }
camelia rakudo-moar dd6c85: OUTPUT«it works␤»
carlin m: my %h = a => "test"; if %h<b>:v eq "test" { say "it works"; }
camelia ( no output )
lizmat m: my %h = a => "test"; if %h<b> eq "test" { say "it works"; } 14:09
camelia rakudo-moar dd6c85: OUTPUT«Use of uninitialized value %h of type Any in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/S25S5s3GSZ:1␤»
lizmat m: say Nil eq "test"
camelia rakudo-moar dd6c85: OUTPUT«Use of Nil in string context in block <unit> at /tmp/NfH3jif1RV:1␤False␤»
lizmat m: say () eq "test"
camelia rakudo-moar dd6c85: OUTPUT«False␤»
lizmat m: say () eq "" 14:10
camelia rakudo-moar dd6c85: OUTPUT«True␤»
lizmat carlin: not sure that *currently* does what you think it does
carlin does "currently" imply that it is supposed to do what I think it does? :-) 14:11
timotimo did you see the error message there wasn't so awesome? 14:11
"uninitialized value %h" should really have hinted at the subscript existing 14:12
lizmat m: my %h = a => "test"; say "it works" if $_ eq "test" with %h<a>
camelia rakudo-moar dd6c85: OUTPUT«5===SORRY!5=== Error while compiling /tmp/MFCyoJmqZf␤Two terms in a row␤at /tmp/MFCyoJmqZf:1␤------> 3> "test"; say "it works" if $_ eq "test"7⏏5 with %h<a>␤ expecting any of:␤ infix␤ infix stopper␤»
moritz s/with/given/ ?
[Coke] wonders if "with" is the right hammer here.
lizmat moritz: want to prevent warning on undef value
timotimo just use === instead of eq? :P 14:13
moritz lizmat: but postfix with doesn't set $_, no?
lizmat m: .say with 42 14:13
camelia rakudo-moar dd6c85: OUTPUT«42␤»
[Coke] might be a few sends behind.
lizmat m: sub a($a) { .return with $a; die }; a 42; a Int 14:14
camelia rakudo-moar dd6c85: OUTPUT«Died␤ in sub a at /tmp/CYyo8Cbwmo:1␤ in block <unit> at /tmp/CYyo8Cbwmo:1␤␤»
lizmat m: sub a($a) { .return with $a; die }; a 42;
camelia rakudo-moar dd6c85: OUTPUT«Died␤ in sub a at /tmp/qinKlQEVVG:1␤ in block <unit> at /tmp/qinKlQEVVG:1␤␤»
lizmat huh?
m: sub a($a) { .return with $a}; say a 42;
camelia rakudo-moar dd6c85: OUTPUT«42␤»
lizmat m: sub a($a) { .return with $a}; say a Int 14:15
camelia rakudo-moar dd6c85: OUTPUT«()␤»
lizmat m: sub a($a) { .return with $a; die }; say a Int
camelia rakudo-moar dd6c85: OUTPUT«Died␤ in sub a at /tmp/R6FskgC1U1:1␤ in block <unit> at /tmp/R6FskgC1U1:1␤␤»
lizmat moritz: it does set $_ :-)
[Coke] m: sub a($) { 3.return }; say a 42;
camelia rakudo-moar dd6c85: OUTPUT«3␤»
lizmat one of the things I added recently: we have a .take, why not a .return ? 14:16
tony-o m: my %h = a => 123; say %h<b>:v eq '';
camelia rakudo-moar dd6c85: OUTPUT«True␤»
tony-o m: my %h = a => 123; say %h<b> eqv '';
camelia rakudo-moar dd6c85: OUTPUT«False␤»
tony-o that might be more what you want carlin
lizmat I would argue that %h<b>:v should return Nil
rather than an empty list
masak lizmat: ...why do we have a .take ? :P 14:17
lizmat I have no idea, that was before my time
masak if it's just a sub, not a keyword, people who wanted .take could already do .&take
but .take is probably older even than that realization...
lizmat it *is* being used in the core
masak ok
jnthn masak: @foo.deepmap(*.take) is cute 14:18
Though only 1 char cuter than *.&take :)
masak for some reason, I find it more palatable to stuff the core setting with useful routines than to stuff Mu/Any with useful methods...
I guess because they inherit into *everything*
and we kinda complicate life a little bit for people who felt .take was a nice method name for their API... 14:19
[Coke] has a clean stresstest on OS X. nice.
tadzik: care to apply rt.perl.org/Ticket/Display.html?id=126211 ? 14:21
tadzik [Coke]: sure. Not sure where that module lives now... :) 14:24
[Coke] hoelzro: I get that RT #126202 isn't doing what you want, but it's following the "spec", yes? So is the request that the spec change?
tadzik: it's a patch against rakudo, I think.
tadzik [Coke]: indeed
dalek kudo/nom: cd8ce4e | (Shoichi Kaji)++ | lib/Pod/To/Text.pm:
Use Terminal::ANSIColor instead of Term::ANSIColor

Because Term::ANSIColor is deprecated See github.com/tadzik/perl6-Term-ANSIC...be708da23d
14:26
tony-o dang. 14:27
[Coke] When documenting IterationEnd on doc.perl6.org, is it ok to give it a page as a Type (even though it's nto really a type?)
lizmat do I understand correctly that we have a core module depending on an ecosystem module ?
moritz lizmat: if it's not available, it simply doesn't color the output
lizmat ah, ok :-) 14:28
[Coke] ah, it's already got a constant entry somewhere.
jasanj ls 14:36
geekosaur . ..
jasanj :) 14:37
timotimo you're feeling rather empty today, geekosaur
geekosaur not sure what subdirectories of an irc channel would be... 14:38
DrForr Spaced out even :)
tony-o geekosaur: it would work like mux 14:44
[Coke] moritz: I'm unable to get a working --profile for even a sparse=100 run of htmlify. You have any luck? 14:50
pmurias_ moritz: would it be possible to get node.js installed on hack according to: github.com/nodejs/node-v0.x-archiv...tributions 14:51
moritz [Coke]: I've been able to get one (though I wasn't able to display the results in the browser), but it doesn't make any sense at all 14:52
pmurias_ moritz: [Coke] was having weird problems with native node modules building that point at some debian node.js crazyiness
moritz pmurias_: uhm, I don't like the curl | bash - as root much :/ 14:52
dalek c: 5fc7cbd | coke++ | lib/Type/Iterator.pod:
RT #126159, notes on IterationEnd
14:53
moritz whatever. 14:54
.tell pmurias I've installed a more up-to-date nodejs on hack. Have fun! 14:55
yoleaux moritz: I'll pass your message to pmurias.
[Coke] tests it out.
Woodi hi today :)
dalek rl6-roast-data: cb7b291 | coke++ | / (9 files):
today (automated commit)
14:55
[Coke] hello from tomorrow. 14:56
leont Is there a way to force named arguments into the slurpy array parameter? 14:57
moritz leont: uhm, not that I'm aware of; what's the use case?
leont I'd like to not lose their order 14:58
moritz nope
tadzik well, you can have a slurpy hash
oh, wait
Woodi I have small performance benchmark, very unscientific. additionally thing run without jit. so my results: spring 2014: 46; spring 2015 36; 2015.07 32; 2015.09 30 where 1 is time of do-same-thing perl5 script...
tadzik *not*
[Coke] moritz, pmurias: much better, thanks. 14:59
moritz Woodi: nice
[Coke] pmurias: t/nqp/78-shell.t fails tests 4-5
Woodi but when I put exit 0; as first line in program it is 19x perl5...
so parsing takes ages...
Woodi also looks .parsefile is faster then .parse 15:00
[Coke] moritz: if you can't open it in the browser, how do you know it doesn't make sense? 15:01
moritz [Coke]: I've written a small perl5 script that analyses the generated json 15:02
pmurias [Coke]: I'm updating my node.js and I'll see if I can reproduce that 15:04
yoleaux 14:54Z <moritz> pmurias: I've installed a more up-to-date nodejs on hack. Have fun!
moritz [Coke]: and it reports that much of the exclusive time is spent in a routine that does nearly nothing, just calls other routines that do a lot of work 15:05
[Coke] Woodi: how does it compare with -e "" ?
moritz: any args passed between these subs?
moritz [Coke]: sure
dalek c: 5c4ca1a | (Steve Mynott)++ | bin/p6doc-index:
GLR fix for github.com/perl6/doc/issues/137
15:06
[Coke] are they big? maybe something is doing a lot of processing of the args?
(just as part of the calling conventions)
(or in a loop, maybe the OSR/Deopt is associated with that sub for some reason?) 15:07
hoelzro [Coke]: I'm not requesting a spec change; I'm just wondering if we should be issuing a warning or something
o/ #perl6
[Coke] what would be the condition to generate the warning? 15:08
brrt hey, question 15:09
timotimo hey, answer
hey, listen!
brrt can perl6 do evil things like inspect the lexicals of a caller?
moritz brrt: only if they are marked as "is context", iirc 15:10
brrt do you have an example?
hmmmm
_itz_ did that moarvm serialisation work (for panda ISTR) ever get merged?
hoelzro [Coke]: two declarands on the same line
TimToady 'is dynamic' 15:11
yoleaux 27 Sep 2015 19:44Z <japhb> TimToady: Happy Birthday!
[Coke] moritz: can I borrow your perl5 script for looking at the data? 15:12
moritz [Coke]: you'll have to ask me again when I'm home; it's not in da cloud :/ 15:13
brrt m: sub foo is dynamic { my $x = 1; bar(); }; sub bar { say CALLER::<$x>; }; foo();
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/fLHewGeaUo␤Can't use unknown trait 'is dynamic' in a sub declaration.␤at /tmp/fLHewGeaUo:1␤ expecting any of:␤ rw raw hidden-from-backtrace hidden-from-USAGE␤ cached pure default DEPR…»
moritz [Coke]: so, in about an hour 15:14
[Coke] moritz: danke.
leont Is there a cleaner solution than hand-writing the accessor to making 􏿽xABhas @.foo􏿽xBB being publically writable?
ilmari sub foo { my $x is dynamic = 1; bar(); }; sub bar { say CALLER::<$x>; }; foo();
m: sub foo { my $x is dynamic = 1; bar(); }; sub bar { say CALLER::<$x>; }; foo(); 15:15
camelia rakudo-moar cd8ce4: OUTPUT«1␤»
ilmari brrt: it's the variable that needs 'is dynamic', not the sub 15:15
leont Erm, that's not clear English, I want it *not* to be writable
brrt aha
Woodi [Coke]: -e "" is exactly 6 :)
brrt ilmari++ 15:16
lizmat FWIW, I think it's better to use the more visual * twigil 15:17
timotimo leont: arrays have the problem of being mutable :\ 15:17
lizmat m: sub foo { my $*x = 1; bar(); }; sub bar { say CALLER::<$x>; }; foo(); # brrt
camelia rakudo-moar cd8ce4: OUTPUT«(Any)␤»
leont has a thing for immutable􏿽x85
lizmat m: sub foo { my $*x = 1; bar(); }; sub bar { say CALLER::<$*x>; }; foo(); # brrt
camelia rakudo-moar cd8ce4: OUTPUT«1␤»
timotimo of course you do :) 15:18
brrt aye, i agree lizmat
ilmari m: class Foo { has @.foo is ro }; say Foo.new(foo => (1..3))
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gyjIygme_9␤Can't use unknown trait 'is ro' in an attribute declaration.␤at /tmp/gyjIygme_9:1␤ expecting any of:␤ rw␤ readonly␤ box_target␤ leading_docs␤ tra…»
lizmat m: sub foo { my $*x = 1; bar(); }; sub bar { say $*x }; foo(); # even simpler :-) brrt 15:20
camelia rakudo-moar cd8ce4: OUTPUT«1␤»
brrt the question is whether normal not-so-marked lexicals can be accessed via CALLER and so escape the life of the frame 15:21
i suppose they can't, which is good
masak yeah. phew.
lizmat well, probably with some callframe() magic and introspection and nqp, you could probably get at them 15:22
[Coke] RT #126130 - Real.new.say goes to Real.Str -> Real.Bridge -> Real.Num -> Real.Bridge -> Real.Num ... ; is the best thing to do here to add a new() to the Role that just throws an exception? (or is there a reason to allow Real.new in the first place?)
brrt hmmm
masak I think if someone uses nqp, we're not at fault for optimizing things away without considering the nqp code. 15:23
brrt however, using nqp::* ops in perl6 is imho very much at your own risk 15:23
masak "nqp at your own risk", kind of.
right.
pmurias node.js-- # packages breaking on the newest node.js 15:25
diakopter well, at least they got the io.js fork remergered 15:25
masak pmurias: breaking how? 15:26
pmurias failing to build :(
masak :( 15:26
n0tjack If ^10 is a shortcut for 0..9, is there a shortcut for 1..10? 15:27
p6: 1 [+] ^10;
camelia rakudo-moar cd8ce4: OUTPUT«WARNINGS:␤Useless use of "[+]" in expression "1 [+] ^" in sink context (line 1)␤»
brrt ^10 >> *+1 maybe
m: say ^10.>> *+1
n0tjack oh, interesting
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_51BcjafuS␤Missing postfix␤at /tmp/_51BcjafuS:1␤------> 3say ^10.>>7⏏5 *+1␤ expecting any of:␤ postfix␤»
n0tjack I always forget about >>
brrt nah, that doesn't work
n0tjack p6: 1 <<+>> ^10 15:28
camelia ( no output )
n0tjack p6: say(1 <<+>> ^10)
camelia rakudo-moar cd8ce4: OUTPUT«(1 2 3 4 5 6 7 8 9 10)␤»
n0tjack I also get [+] and <<+>> mixed up
I suppose the answer is just 1..10 15:29
thanks
diakopter pmurias: you knew about the io.js fork and big controversy and community split?
|Tux| So, should "panda --installed --verbose list" do the same as "panda list --installed --verbose" ? 15:31
the first works, the second barfs 15:32
n0tjack p6: sub prefix:<➕> { (1..*)[^n] } say (➕^10);
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Strange text after block (missing semicolon or comma?)␤at /tmp/tmpfile:1␤------> 3sub prefix:<➕> { (1..*)[^n] }7⏏5 say (➕^10);␤ expecting any of:␤ infix␤ infix sto…»
diakopter it was a reaction to Joyent (and StrongLoop, and others) trying to take over the community & project & such
n0tjack p6: sub prefix:<➕> { (1..*)[^n] }; say (➕^10); 15:33
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ n used at line 1␤␤»
n0tjack p6: sub prefix:<➕> { (1..*)[$^n] }; say (➕^10);
camelia rakudo-moar cd8ce4: OUTPUT«11␤»
n0tjack why isn't the ➕ operator there getting ^10 (0..9) as an array and using it as a slice? 15:34
n0tjack p6: sub prefix:<➕> { (1..*)[@n] }; say (➕^10); 15:34
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Variable '@n' is not declared␤at /tmp/tmpfile:1␤------> 3sub prefix:<➕> { (1..*)[7⏏5@n] }; say (➕^10);␤»
ilmari m: sub prefix:<➕>(@n) { (1..*)[@n] }; say (➕^10); 15:36
camelia rakudo-moar cd8ce4: OUTPUT«(1 2 3 4 5 6 7 8 9 10)␤»
n0tjack thanks! 15:37
I wasn't sure how to name arguments in operator definitions
ilmari m: sub prefix:<➕> { (1..*)[@^n] }; say (➕^10);
camelia rakudo-moar cd8ce4: OUTPUT«(1 2 3 4 5 6 7 8 9 10)␤»
ilmari the ^ twigil creates implicit parameters 15:38
n0tjack yes, that's what I wanted.
n0tjack because (1..*) is anonymous, will perl6 reconstruct it on every call? 15:39
or does the lazy-list memoization still apply?
TimToady the 1..* is not expensive to generate, but unrolling the range can be 15:40
we oughta be able to add and multiply intervals directly though... 15:41
n0tjack how does the compiler know if it needs to calculate all the indices up to the requested interval vs. when it can get away with calculating htem directly? 15:42
pmurias diakopter: I wasn't aware of the controversy 15:43
diakopter: the fork seemed to resolve itself while I was away from nqp-js and as such I didn't look deep into it 15:44
diakopter: what's really annoying me right now is nqp-js deps having unmerged pull request to make them build on current node.js 15:45
leont Where can I find more information about that "New slurpy parameter" syntax? 15:46
I can guess what it does, but details 15:47
pmurias diakopter: have you followed the community fork? 15:48
TimToady leont: design.perl6.org/S06.html#One-argum...py_binding 15:48
leont Thanks, yeah that is by now what I expect 15:50
nine m: sub foo() { my $x = 1; bar; }; sub bar() { say CALLER::LEXICAL::<$x>; }; foo;
camelia rakudo-moar cd8ce4: OUTPUT«1␤»
nine brrt ^^^
I knew there was a way without nqp
pmurias isn't it spec violating? 15:51
TimToady .tell ShimmerFairy no, tc is by definition only for initial caps; use tcuc if you want to uppercase everything 15:56
yoleaux TimToady: I'll pass your message to ShimmerFairy.
pmurias hmm it seems that nqp-js builds on travis are randomly failing due to something that looks like a random moarvm memory error I had sometimes experienced in the past :( 15:59
bioexpress Hello, why was the module Term::ANSIColor renamed in Terminal::ANSIColor? 16:03
TimToady because someone thought it might collide with the idea of "term" in parsing, but it's an unfounded fear 16:05
bioexpress thx 16:06
Ven waves 16:08
TimToady is it just me, or did the parse phase get about 10 seconds slower overnight? 16:09
tadzik well, I still think that Terminal is a better name for terminal stuff than Term 16:10
TimToady it's as likely to collide with an airport terminal 16:10
all the world is not CS 16:11
PerlJam Terminal::Degree :)
n0tjack Terminal::Velocity
TimToady Terminal::Patient
you can play this game on both sides :) 16:12
TimToady and Term has history 16:12
mr_ron m: class C { method gist { 42 } }; my $c = C.new; my $i = 5; say $i; say $c.perl; say $c
yoleaux 27 Sep 2015 05:57Z <moritz> mr_ron: that's what the R* releases are for: they are snapshots where the version of rakudo and the modules match
camelia rakudo-moar cd8ce4: OUTPUT«5␤C.new␤This type cannot unbox to a native string␤ in block <unit> at /tmp/1LGLJiZs1S:1␤␤»
pmurias the module is called Term::ANSIColor in both perl5 and ruby
TimToady the name is already claimed, basically 16:13
PerlJam Shells will still call it TERM too.
TimToady and we don't really need this to become a FAQ
tadzik I wasn't aware that "it has always been that way and we've been fine" is an argument in the perl 6 world
TimToady sure it is 16:14
tadzik I'm okay with reverting the change given the apparent outrage that it caused :)
but I still think it was for the better
PerlJam tadzik: I'm not outraged, just highly surprised.
TimToady
.oO(use Terminal::ANSIColor:api<Term>)
16:15
pmurias (reverting the name)++
TimToady
.oO(use Term::ANSIColor:api<Terminal>)[C[C[C[C[C[C[C[C[C[C[C[C :)
16:16
yow
.oO(use Term::ANSIColor:api<Terminal>) :)
tadzik I was sure that ?C?C?C?C?C?C?C?C is part of the joke :P 16:17
PerlJam me too! :)
TimToady I reverted it
tadzik . o O ( now you should too )
Ven is there a way to get such parameters?
TimToady eh? 16:18
Ven the ":api<...>" part of "use" :P 16:21
pmurias would bumping the minimal node.js version from the 0.10 to 0.12 cause trouble for anyone? (so I can get rid of an annoying broken dependency)
TimToady speaking of 16-bit limitations... 16:23
m: say 1, |(2 xx 65536)
camelia rakudo-moar cd8ce4: OUTPUT«Too many arguments in flattening array.␤ in block <unit> at /tmp/FivESPhr4o:1␤␤»
TimToady m: say 1, |(2 xx 65535)
camelia rakudo-moar cd8ce4: OUTPUT«Too many arguments in flattening array.␤ in block <unit> at /tmp/5Mo4af5Avw:1␤␤»
TimToady m: say 1, |(2 xx 65534) 16:24
camelia rakudo-moar cd8ce4: OUTPUT«(signal SEGV)»
jnthn TimToady: Well, on the JVM you hit that at 256...
TimToady: Additionally, on both, the performance of doing huge arg flattens is pretty horrible.
TimToady pity we can't defer to slip somehow instead
TimToady shouldn't SEGV though 16:25
jnthn I've pondered that a bit but it's...fraught
Yeah, agee. File that one...
TimToady and various internals depend on |
jnthn Arg passing is one of those things you really want to keep pretty low level...
TimToady but it breaks our metas
jnthn Why? 16:26
I never got why they were written in that way, especially after the single arg rule.
TimToady sub (+values) { op.(|values) } # from METAOP_REDUCE_LIST 16:28
it's already single-arg
TimToady not using | there only works if all possible ops are single arg 16:29
jnthn If the purpose is just to delegate, can it not be sub (|c) { op.(|c) } ? 16:30
TimToady doesn't help the triangle form 16:31
but maybe we can write that off as rather specialized
Ven TimToady: why is the | necessary in (|values)? In case it's not a single-arg-rule'd operator? 16:34
TimToady that's the idea
maybe we can optimize it away somehow 16:35
lizmat p6weekly.wordpress.com/2015/09/28/...-birthday/ # it is live! :-) 16:36
TimToady and the | -> | trick doesn't really help when we have do more than delegate, as in op.(|values.map({nqp::decont($_)}))
TimToady can we somehow notice when we pass a single arg | and promote it directly to a capture? 16:38
jnthn lizmat: I think superstitious parens around (^100) 16:41
jnthn TimToady: That may be more manageable, though Capture objects only really exist "on demand" (since we don't really want to allocate a GC-able object per call in Moar, and on the JVM we want to use its own idea of arguments so we can take advantage of stuff like invokedynamic) 16:43
TimToady: So the actual guts of arg passing don't actual involve a Capture 16:44
lizmat m: ^10.grep( * %% 2 ).say # jnthn: I think not
camelia rakudo-moar cd8ce4: OUTPUT«Potential difficulties:␤ Precedence of ^ is looser than method call; please parenthesize␤ at /tmp/ZqvzusWWsW:1␤ ------> 3^107⏏5.grep( * %% 2 ).say # jnthn: I think n␤WARNINGS:␤Useless use of "^" in expression "^10.grep( * %% 2 ).…»
jnthn lizmat: No no, only for the infix form. 16:44
lizmat: Which you used
lizmat aahhh
jnthn m: ^10 .grep( * %% 2 ).say
camelia rakudo-moar cd8ce4: OUTPUT«(0 2 4 6 8)␤»
lizmat m: ^10 . grep( * %% 2 ).say # jnthn: I think not
camelia rakudo-moar cd8ce4: OUTPUT«(0 2 4 6 8)␤»
lizmat whee
jnthn ;)
lizmat fixed... 16:45
jnthn lizmat++ for the weekly btw
I've a partly done thing to post, will finish it up this evening
lizmat that will be for next week's :-)
cycling&
jnthn Indeed :) 16:46
tony-o i just submitted a pr that has some temp fixes for CURLI since it looks like we're going to be spending an inordinate amount of time talking about it 16:48
jnthn tony-o: Why the warn, ooc? 16:50
jnthn tony-o: Something looks a bit off whitespace wise too 16:51
tony-o because that seemed to be a large point of contention in our discussion and since i was in there i figured i'd compromise. i don't think it should do anything if no precomp is available. others think it should die 16:52
jnthn: my bad, i'm always on 2 spaces per tab. will correct it
jnthn OK, I need to read a bunch of discussions :) 16:52
Also, will @candi not now always be empty? 16:53
TimToady
.oO(taking children from candi...)
jnthn :P
tony-o haha
it will always be empty if it gets to the last line, which means there is no candidates 16:54
jnthn Right, but the push to it is gone too?
tony-o it returns directly, like CURLF
jnthn I guess I'm just asking, why "+@candi ?? @candi[0] !! ();" intead of just () ?
tony-o jnthn: i pushed that in there with my spacing fix 16:55
jnthn Will this cause warnings for folks using Panda? 16:56
Since it doesn't pre-comp?
Or does it not use CURLI at all any more?
tony-o panda doesn't use CURLI at all so it shouldn't
i get this error when i try to use panda so i can't test: /Users/tonyo/.rakudobrew/bin/panda: fork: Resource temporarily unavailable 16:57
jnthn o.O 17:04
gotta go; bbl
But if somebody can test Panda with tony-o's patch, then I'm happy for it to go in
dha Have published a blog post. FEAR ME. 17:10
TimToady has the appropriate amount of fu^Wfear 17:11
nine jnthn: I added a EnumHOW based class called Boolean to BOOTSTRAP.nqp. In Boolean.pm I can ^add_method, but when I try to ^add_multi_method, I get a "Cannot auto-generate a proto method in the setting" error. But when I try to ^add_multi_method the proto manually I get a Redeclaration error during compilation.
jnthn: Any pointers for where should I go from here?
dha TimToady++ 17:12
dha .tell lizmat Have blogged, if you're still summarizing. dhaperl6.blogspot.com/2015/09/im-back.html 17:18
yoleaux dha: I'll pass your message to lizmat.
btyler dha: don't want to do the blogspot login dance, but for me the quality of perl 5's documentation was the omnipresent "SYNOPSIS" section 17:37
was/is, excuse me
dha no worries. I'll take comments here. ;-) 17:38
Thanks.
dha That would be in module docs, rather than the perl docs per se, yes? 17:39
btyler for me, a decent synopsis makes up for a lot of other failings; heck, I might not even discover the other documentation failings :)
I suppose, although perldoc -f split has essentially a synopsis in the first 3 lines
dha Ah. That kind of synopsis. Noted. 17:41
btyler you're totally correct, I was thinking module, but both are deeply appreciated
although I think it's fair to say that module docs for modules that ship in the main distribution are almost as important as core language doc
dha Indeed. but different from the point of view of doc writing. 17:42
And, yes, although not labelled "SYNOPSIS" the format examples for functions are important. 17:43
btyler for sure. ok, that's all the input I had, sorry for conflating module doc with core language doc
dha No worries. It's valuable and appreciated.
btyler I just have a deep love for SYNOPSIS culture
dha synopses are good. :-)
btyler it really helps me get stuff done
Juerd found S07 easy to read, except for Iterable section 17:44
Juerd doesn't know what "mark out" means, technically 17:45
The second paragraph can be read as "mark out when .flat is used", or as "flatten when .flat is used"
I'm not sure if "in conjunction with" means "together with", or somehow refers to junctions. 17:46
dha Hm. looking at C<split> in the p6 docs, I'm wondering if maybe we need "synopses" more like the p5 ones, rather than ones that seem to reflect the p6 implementation rather than use.
Juerd The last sentence ends in "returns identity". I don't know what returning identity is, but which identity is returned? 17:47
dha: What's a Perl 5 synopsis?
dha As discussed above. If I understand btyler correctly, stuff like "split /PATTERN/,EXPR,LIMIT" 17:48
btyler I was just shoe-horning the term into a pattern seen in the p5 core docs
Juerd Oh, synopsis as in =head1 SYNOPSIS, not synopsis as in design document. I get it.
dha as opposed to what's in split for p6, e.g. "multi sub split( Str:D $delimiter, Str:D $input, $limit = Inf, :$all) returns Positional" 17:49
Juerd I quite like having the signature in the documentation 17:49
dha Of course, because there are several C<split>s, this gets complicated.
btyler I'd also note an anti-pattern in the python core docs: I used python for two years in university and pretty much had no idea what the docs meant by "kwargs" everywhere
PerlJam dha: since types have a more prominent role in P6 and multis exist, I think having the full signature is quite useful
btyler of course, once you know it, it is very clear
dha Juerd - I should have said "along with" rather than "rather than"
Juerd btyler: Have you found out whether kwargs are edible?
btyler nom nom nom 17:50
PerlJam dha: that's not to say there shouldn't *also* be here's-how-to-use-the-thing synopses
dha PerlJam - right.
btyler *had no idea what 'kwargs' meant, despite referring to the online docs constantly while working through my assignments 17:51
dha With some exceptions, I'm thinking that more information is generally better.
PerlJam yep
Juerd PerlJam: When examples are included, I love when there's a basic one and a more advanced one. A lot of documentation uses examples to show off capabilities, rather than the simplicity of the most common usage. 17:51
btyler which generalizes to "be really careful of the amount of language-specific vocabulary you ask people to pick up while reading doc" 17:51
Juerd (Referring to documentation in general, not Perl docs specifically)
PerlJam Juerd: indeed. I find it annoying when examples try to show-off everything at once. 17:52
Juerd btyler: Wiki-style links can be useful. They allow you to use jargon for conciseness without the downside of having many people miss out.
AlexDaniel How can I search for all bug reports that were opened by me? Both open and closed, I want to review a couple of them… 17:53
Juerd PerlJam: I like it when they do, but not as the *only* example :)
dha Juerd - I agree. I'm thinking, in general terms, (full signature synopsis)/(usage synopsis)/(description with appropriate examples interleaved)
PerlJam dha++ sounds awesome
Juerd dha: That would work. Personally I'm not a big fan of interleaving because it gets messy, but I wouldn't object to it.
btyler Juerd: yes, certainly, although man page formatting precludes taking too much advantage of links 17:54
dha Well, when I say interleaving, I mean "here's what this does (...) like this: (example)
Juerd I think that probably most people like the interleaved style.
dha which might be what you don't like, but I think it's generally useful.
Juerd btyler: I think that primarily advanced users who have previously studied the language and learned the jargon will use manpages, whereas most beginners will very probably (only) use HTML resources instead. 17:55
btyler yeah, perhaps. I used them a lot when I was learning perl, if only because it was faster than navigating my browser to the appropriate web version, but I guess I don't know how common that learning scenario is 17:56
PerlJam I know that when I must use PHP, php.net is a necessary resource ;) 17:58
dha Juerd - I wouldn't assume that. Particularly for p5 programmers who are probably pretty used to using "perldoc perlblah" or "perldoc -f function"
Juerd I've been called a fossil for using those. 17:59
dha I would not call you that for that. :-) 18:01
Of course I would call people who called you that young whippersnappers and tell them to get off my lawn, so maybe I'm a bit out of touch. ;-) 18:03
pink_mist prefers reading the perl5 perldocs online most of the time; the browser has a more featureful interface for navigating around the docs than my terminal has
dha Young whippersnapper. Get off my lawn! 18:04
Juerd :)
pink_mist plus I can keep track of which window is docs easier if it doesn't look the same as one where I'm coding :P 18:04
dha Hm. I'm also wondering how something like p5-s "perldoc -f" would work in p6, when there are multiple versions of a function in different classes. 18:05
pink_mist - You kids today... tsk. 18:06
(I can keep this up all day, you know... :-)
pink_mist (or at least you could have if you were younger :P)
dha Ouch! 18:07
Juerd pink_mist: I like your nickname. Does it refer to anything specific? 18:08
Oh, after looking it up and finding the definition in the "urban dictionary" I don't really like it anymore. 18:09
dha btyler - would it make people's lives easier if I moved to something other than blogger?
Juerd www.urbandictionary.com/define.php?...=pink+mist
pink_mist Juerd: it's not from ud :/
dha looking things up in Urban Dictionary is usually a mistake. :-)
pink_mist Juerd: though I guess it's not far from it ...
Juerd dha: I didn't specifically look it up there. Duckduckgo found it for me.
dha btyler - or mirrored on something other than blogger?
pink_mist Juerd: heh, not really ... I got it by being uppity towards an operator in some other channel, long long ago, on a network far far away ... and he got annoyed at me and killed me so hard a pink mist was all that was left
Juerd Heh 18:10
dha Juerd - even so. :-)
PerlJam pink_mist: here I've been thinking that you have some affinity for bombs/bomb squads 18:11
pink_mist 0_o lol
Juerd I thought maybe it had to do with "My Little Pony" or something like that :)
pink_mist no no, that's just my hostname (uhm, if I'm uncloaked that is) :P 18:12
PerlJam Juerd: that's a far happier version of things :)
btyler dha: I'm just being a grouch about blog comment systems, don't sweat it 18:13
dha btyler - will do. :-)
DrForr Damnit, we're woking on it, it just got delayed due to a failed gravity check.
*working 18:14
Juerd Gravity failed?
DrForr No, I spontaneously decided to make sure gravity still worked by moving a limb wrong. 18:15
dha ow. 18:16
But thanks for checking. 18:17
DrForr Hence being hospitalized in Granada for ~2 weeks.
You're quite welcome, gotta keep an eye on that bastard.
dha Oh. I though you did something bad newly. Still sorry to hear about Granada, but glad you have not reinsured.
dammit autocorrect. reinJURED.
DrForr Oh, that. No, still the original injuries. 18:18
dha Yeah, now that Isaac Newton's dead, we all need to pitch in.
dha back to original comment, what delay are you referring to? 18:18
DrForr On revamping blogs.perl.org - I saw teh comment on blogger, thought that might be what you're referring to. 18:19
dha oh, no. btyler just had a comment on my last post at dhaperl6.blogspot.com and preferred not to sign in to comment on it. 18:21
no mention of blogs.perl.org. UNTIL NOW.
:-) 18:22
Although maybe I should mirror there.
Speaking of full signatures... I'm seeing things like "Str:D" and "Str:D:" What are all those Ds and colons doing? 18:25
pink_mist I think it's something to do with 'defined'
but I'm unsure
dha ok. Now we're both unsure. ;_) 18:26
FROGGS Str:D $foo - specifies a parameter that accepts a Str instance
Str:D: $self - specifies that the method can only be called on a Str instance
dha and the D means... ? 18:27
FROGGS defined
pink_mist so what precisely is the difference between 'Str $foo' and 'Str:D $foo'?
... =)
FROGGS Str $foo also accepts an undefined Str, the type object itself 18:27
dha Aha. Ok, now I'm convinced we really need usage synopses (or whatever we would call them) as well as full sig synopses. 18:28
pink_mist what is the ':D' construct in that called? why ':' and why 'D'? well ok, I guess I understand the D
dha because anyone coming to p6 for the first time is going to look at that, shake their head, and go away. 18:29
FROGGS pink_mist: a :foo is called a colonpair
pink_mist: we often use these to attach information to things
pink_mist humm, so the :D colonpair is a predefined one I take it? can one create ones own colonpairs? what colonpairs already exist? 18:31
TimToady it's obviously a smiley
Juerd :D is probably the ugliest commonly used thing in Perl 6
pink_mist hehe
TimToady so it only accepts happy values 18:32
Juerd TimToady: I can't parse it as a smiley because it has no whitespace in front of it :)
dha Juerd - I've been around perl long enough that I do not believe that. :-)
dalek kudo/nom: 815eb48 | TimToady++ | src/core/ (5 files):
remove various GLR transitional XXX comments
18:32
Juerd dha: What other Perl 6 is ugly like it, then? :) 18:33
dha Oh, I have no idea. I just don't think that's anywhere near ugly enough to be a winner. :-)
moritz finds character clsses in reexes too verbose
Juerd Most of the language is so beautiful. Unlike Perl 5, with its $foo->$#* :)
moritz <[a..z]> vs. [a-z]
Juerd moritz: That was my #1 ugly thing until :D came along, because :D is used much more often 18:34
PerlJam has never used :D except in setting code.
Juerd I wonder if :D is the ASCII equivalent of ☺
(And if ☺ is equally valid.) 18:35
I could so have a sub foo (Str☺ $bar) { ... }
FROGGS no :o)
moritz sometimes I wonder if the :D could be implicit for all methods that access an attribute
Juerd I can even think of why it had to be :D instead of :)
moritz: method:D ;) 18:36
FROGGS .oO( metho:D )
Juerd Haha
What's metho☺, though? :) 18:37
pink_mist what about metho☻ :P
Juerd pink_mist: Potato, potato :) 18:38
AlexDaniel Hm. How can I search for all bug reports that were opened by me? Both open and closed, I want to review a couple of them… 18:39
dha Is :D used in the actual language typically? Or just in implementation/definition?
mr_ron m: grammar G { token TOP { ^ \d+ | <no-such-rule> $ } } ; say ~ G.parse('123'); 18:40
camelia rakudo-moar cd8ce4: OUTPUT«123␤»
mr_ron m: if False { no-such-method() }
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/iRWEUglGvg␤Undeclared routine:␤ no-such-method used at line 1␤␤»
Juerd dha: Scrolling through my Perl 5 code, I think I would use :D a lot in Perl 6.
dha Oh? How so?
Juerd I have quite a lot of "defined" checks, including "// die".
And then there's a lot of code that probably should have those checks, but doesn't have them. 18:41
AlexDaniel yes, because :D is not there
AlexDaniel Juerd: I agree 18:41
dha Ah. you'd do that rather than doing something like "is defined"? Of course, I'm not actually using my brain at the moment, so that may be complete garbage.
mr_ron is the no-such-rule problem a bug?
Juerd dha: I like how :D is very short. I just don't like the way it looks. I have no suggestion for changing it. 18:42
dha *nod*
moritz no*d*
Juerd No:D
AlexDaniel Juerd: yes, I don't like the way it looks too 18:43
Juerd Let's have a sigil, say €, for scalars that only hold defined values ;)
AlexDaniel $/var… 18:43
dha So, with respect to my suggestion earlier of doing docs in the form (full signature synopsis)/(usage synopsis)/(description and examples), here's an example of my off-the-top-of-my-head thoughts.
gist.github.com/dha/ea03e5c840f7131248de
Is that crazy or maybe something we can work with?
AlexDaniel or would that be /$var… 18:44
Juerd AlexDaniel: / is for regexes
AlexDaniel Juerd: hm wait, // does not work in perl6?
Juerd AlexDaniel: That's //, not / 18:44
AlexDaniel m: say undef // 25;
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/FuLGFKYhxU␤Unsupported use of undef as a value; in Perl 6 please use something more specific:␤ an undefined type object such as Any or Int,␤ :!defined as a matcher,␤ Any:U as a type constraint,␤ Nil a…»
Juerd AlexDaniel: I meant to say $/, not /.
As in, $/ is for regexes. 18:45
AlexDaniel Juerd: yeah okay, I know that it is the worst suggestion ever
moritz m: say Any // 25
camelia rakudo-moar cd8ce4: OUTPUT«25␤»
PerlJam AlexDaniel: undef doesn't work in P6 :)
AlexDaniel PerlJam: yeah, that's interesting
Juerd AlexDaniel: Nah, the worst suggestion ever was probably .= ;)
AlexDaniel so if I want to make something undefined, I just = Any; ?
Juerd But I love how . behaves more like .= now! :) 18:46
(Syntactically)
dha Juerd - Not ∆ for defined? :-)
PerlJam AlexDaniel: or you can make it typed to whatever (possibly more appropriate) value you want.
AlexDaniel Juerd: wait, .= ?
Juerd AlexDaniel: @array.=sort
AlexDaniel: $name.=ucfirst
AlexDaniel ah no, it's great
does it work? :)
Juerd It's great but the syntax is (or was) very weird.
It's less weird now that . can be infix. 18:47
AlexDaniel m: my $name = 'hello'; $name .= ucfirst; say $name;
camelia rakudo-moar cd8ce4: OUTPUT«Method 'ucfirst' not found for invocant of class 'Str'␤ in block <unit> at /tmp/MzJZSDmzJU:1␤␤»
AlexDaniel m: my $name = 'hello'; $name .= uc; say $name;
camelia rakudo-moar cd8ce4: OUTPUT«HELLO␤»
Juerd m: @foo = <a z c d y>; @foo.=sort; say @foo.perl
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/SAmWfbNPGJ␤Variable '@foo' is not declared␤at /tmp/SAmWfbNPGJ:1␤------> 3<BOL>7⏏5@foo = <a z c d y>; @foo.=sort; say @foo␤»
Juerd m: my @foo = <a z c d y>; @foo.=sort; say @foo.perl
camelia rakudo-moar cd8ce4: OUTPUT«["a", "c", "d", "y", "z"]␤»
AlexDaniel Juerd: I'd say that it is pretty consistent
I like how any operator can be used like that 18:48
Juerd It used to be inconsistent until very recently
m: say([] . perl)
camelia rakudo-moar cd8ce4: OUTPUT«[]␤»
Juerd ^^ recently added syntax
You couldn't have whitespace around . before
AlexDaniel amazing!
m: say 'test' . uc 18:49
camelia rakudo-moar cd8ce4: OUTPUT«TEST␤»
AlexDaniel m: say 'test' . 'woah'
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ajkeB_78Ru␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/ajkeB_78Ru:1␤------> 3say 'test' . '7⏏5woah'␤»
pink_mist . o O ( 42.3 --> 42.=3? 0_o )
Juerd pink_mist: That's a different "." 18:50
pink_mist :P
AlexDaniel m: $_ = 'foo'; say 'test' . .uc
camelia rakudo-moar cd8ce4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ma4zOiyY7N␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/ma4zOiyY7N:1␤------> 3$_ = 'foo'; say 'test' . .7⏏5uc␤»
AlexDaniel okay
ilmari m: say 'test'␤ .uc␤ .lc
camelia rakudo-moar cd8ce4: OUTPUT«test␤»
Juerd Does Perl 6 have #line?
I find the /tmp/$garbage ugly
m: say 'test' 18:51
camelia rakudo-moar cd8ce4: OUTPUT«test␤»
AlexDaniel m: say 'test'␤.␤uc
camelia rakudo-moar cd8ce4: OUTPUT«TEST␤»
moritz Juerd: you're welcome to write a camelia patch that creates poetic temp file names :-)
Juerd moritz: It'd be better to have a non-filename there 18:52
[Coke] AlexDaniel: you ever get your ticket query? 18:54
jnthn .tell nine: A proto should be added with add_method since it's not a multi, but a proto :)
yoleaux jnthn: What kind of a name is "nine:"?!
PerlJam heh
AlexDaniel [Coke]: nope
PerlJam yoleaux: you really should be smarter about this sort of thing
dha I think I like this definition/usage/description and example template for the docs.
Now I just have to get everyone to buy in... 18:55
ilmari yoleaux: the one between eight and ten, obviously
[Coke] AlexDaniel: I go to rt.perl.org -> tickets -> simple search -> requestor email = .... -> add these terms and search.
jnthn yoleaux: What kind of idiot are you? 18:55
.tell nine A proto should be added with add_method since it's not a multi, but a proto :)
yoleaux jnthn: I'll pass your message to nine.
[Coke] You have a chance to remove the default search criteria, which for me basically "perl6 queue, only open tickets"
jnthn mr_ron: Your no-such-method() example doesn't call a method, it calls a sub. 18:56
ilmari m: #line 42 foo␤die 18:56
camelia rakudo-moar 815eb4: OUTPUT«Died␤ in block <unit> at /tmp/JM9OJhoD0n:2␤␤»
jnthn mr_ron: Sub calls are lexical and so can be compile-time checked. Method calls are late bound, as OO should be. And a call to a subrule is just a method call in disguise. 18:56
m: if 0 { 42.no-such-method }
camelia ( no output )
jnthn m: no-such-sub() 18:57
camelia rakudo-moar 815eb4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/pMxUnLi3Eb␤Undeclared routine:␤ no-such-sub used at line 1␤␤»
mr_ron m: grammar G { token TOP { ^ \d+ | <no-such-rule> $ } } ; say ~ G.parse('123');
camelia rakudo-moar 815eb4: OUTPUT«123␤»
mr_ron m: if False { no-such-sub() }
camelia rakudo-moar 815eb4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/4X6QzU7Gik␤Undeclared routine:␤ no-such-sub used at line 1␤␤»
[Coke] AlexDaniel: does that help?
AlexDaniel [Coke]: oh, rocket science! Yeah hold on I'll try 18:58
mr_ron jnthn: I'm confused - I don't understand why the method part matters. The bug would be the part about the rule. Thanks for looking on.
jnthn mr_ron: A rule *is* a method
mr_ron: And a grammar is just a class with a different default base class
[Coke] in my experience, everyone who logs into RT sees it completely differently, so those options may not be there for you. :)
m: say Grammar.^mro 18:59
camelia rakudo-moar 815eb4: OUTPUT«((Grammar) (Cursor) (Any) (Mu))␤»
ilmari grammar G { token TOP { ^ \d+ | <no-such-rule> $ } } ; say ~ G.parse('foo');
m: grammar G { token TOP { ^ \d+ | <no-such-rule> $ } } ; say ~ G.parse('foo');
camelia rakudo-moar 815eb4: OUTPUT«Method 'no-such-rule' not found for invocant of class 'G'␤ in regex TOP at /tmp/ThJ69mee4i:1␤ in block <unit> at /tmp/ThJ69mee4i:1␤␤»
mr_ron m: if '123' ~~ / \d+ | <nosuchtoken> / { say 'ok'} 19:00
camelia rakudo-moar 815eb4: OUTPUT«ok␤»
mr_ron is nosuchtoken a method?
jnthn A method call, but yes
ilmari m: 'foo' ~~ / \d+ | <nosuchtoken> /
camelia rakudo-moar 815eb4: OUTPUT«Method 'nosuchtoken' not found for invocant of class 'Cursor'␤ in block <unit> at /tmp/u_0XigXbCP:1␤␤»
jnthn I was about to do that. :) 19:01
AlexDaniel [Coke]: I can't get it to work…
ilmari qr//.^mro
m: qr//.^mro
camelia rakudo-moar 815eb4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/jh2DBlidoh␤Unsupported use of qr for regex quoting; in Perl 6 please use rx//␤at /tmp/jh2DBlidoh:1␤------> 3qr7⏏5//.^mro␤»
dalek ast: 106b31a | usev6++ | S14-roles/ (4 files):
Replace some eval-dies-ok in S14-* with throws-like
ilmari m: rx//.^mro
camelia rakudo-moar 815eb4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/iku1uR9SK3␤Null regex not allowed␤at /tmp/iku1uR9SK3:1␤------> 3rx/7⏏5/.^mro␤»
ilmari m: rx/./.^mro
camelia ( no output )
FROGGS m: say rx/./.^mro
ilmari m: say rx/./.^mro
camelia rakudo-moar 815eb4: OUTPUT«((Regex) (Method) (Routine) (Block) (Code) (Any) (Mu))␤»
mr_ron if it tries to call it the problem is found but it kind of seems to defeat "strict" in a way
ilmari FROGGS: damnit
AlexDaniel oooh wait
FROGGS ;o)
AlexDaniel I think I got it
[Coke] \o/ 19:02
FROGGS mr_ron: method calls are not resolved at compile time... sub calls are
AlexDaniel [Coke]: well not really, it seems like it does not list closed ones
FROGGS m: '123' ~~ / \d+ | <&nosuchtoken> / 19:03
camelia rakudo-moar 815eb4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DXCIIZ9RCU␤Undeclared routine:␤ &nosuchtoken used at line 1␤␤»
AlexDaniel now I have to figure out what I have to type there to get all…
FROGGS mr_ron: the SORRY tells you it is a compile time error
AlexDaniel oh, just “any”
AlexDaniel [Coke]: so the solution is: 1. go here rt.perl.org/Public/Search/Simple.html 2. type your email address and “any”, like: [email@hidden.address] any 19:04
and that's it
pretty simple
Hm I wish I could bookmark it but I think that it will throw a CSRF error 19:07
… it does it all the time… 19:08
mr_ron thanks to everyone for the clarification that rules are like methods ... 19:12
dalek ecs: 806ebcb | (Prog Rammer)++ | S07-lists.pod:
Add another example that seemed to be missing
19:15
ecs: cc54811 | jnthn++ | S07-lists.pod:
Merge pull request #100 from prammer/one-arg-clarify

Add another example that seemed to be missing
AlexDaniel m: say [.] ('test', &uc); 19:17
camelia rakudo-moar 815eb4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YL0bdyLvyp␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/YL0bdyLvyp:1␤------> 3say [.]7⏏5 ('test', &uc);␤»
nine jnthn: thanks! Progress :) 19:18
yoleaux 18:55Z <jnthn> nine: A proto should be added with add_method since it's not a multi, but a proto :)
mr_ron From design.perl6.org/S05.html#Regex_Rou..._Anonymous reads: The analogy between sub and regex extends much further. Just as you can have anonymous subs and named subs... ...so too you can have anonymous regexes and named regexes (and tokens, and rules): These keyword-declared regexes are officially of type Method, which is derived from Routine.
nine I now have an EnumHOW based Boolean class in BOOTSTRAP that ~~ Int
mr_ron You have to read the fine print. 19:19
dalek kudo/nom: b1f75d0 | tony-o++ | src/core/CompUnitRepo/Local/Installation.pm:
fixes for CURLI until Final Solution™ is inflicted upon us
19:25
kudo/nom: b805f49 | tony-o++ | src/core/CompUnitRepo/Local/Installation.pm:
fix spaces
kudo/nom: ae9afc5 | tony-o++ | src/core/CompUnitRepo/Local/Installation.pm:
no candidates doesnt need a check
kudo/nom: 9e8b7b4 | lizmat++ | src/core/CompUnitRepo/Local/Installation.pm:
Merge pull request #541 from tony-o/nom

fixes for CURLI until Final Solution™ is inflicted upon us
ast: 202bbe6 | usev6++ | S (3 files):
Replace more eval-dies-ok with throws-like (S15/S29)
19:27
btyler dha: any thoughts on "Usage" first in the doc template you linked? 19:30
tony-o lizmat++ ty for merge 19:32
timotimo o/ 19:32
lizmat tony-o: yw 19:35
yoleaux 17:18Z <dha> lizmat: Have blogged, if you're still summarizing. dhaperl6.blogspot.com/2015/09/im-back.html
jnthn time for rest...couple of flights tomorrow :S &
nine jnthn: thank you so much for fixing this 16 bit overflow just in time to safe me from hours of frustrating debugging.
jnthn nine: Welcome ;)
lizmat jnthn: safe travels! 19:36
jnthn lizmat: Thanks :)
jnthn is going for a few days teaching, so will be a bit less available than normal this week 19:37
No more teaching until Nov after this though :)
anyways, 'night o/
nine Good night! 19:38
lizmat .tell dha I feel it would get better attention next week, instead of being in the barrage of blog posts of this week 19:41
yoleaux lizmat: I'll pass your message to dha.
dha lizmat - so noted. 19:41
yoleaux 19:41Z <lizmat> dha: I feel it would get better attention next week, instead of being in the barrage of blog posts of this week
dha But I warn you, I MAY BLOG AGAIN. :-) 19:42
lizmat that is fine, I think we can handle that :-)
vendethiel I was told someone got an APL module for Perl6. is that true? 19:44
it can't quite be just "embedded", as + and / are reused :P
dha I made the mistake of having an idea. :-) 19:46
masak irclog.perlgeek.de/perl6/2015-09-27#i_11280665 # what it's like to be a (good) language designer 19:50
[Coke] vendethiel: (APL) not that I'm aware of. There was an APL implementation on parrot years ago, but it's surely bitrotted. 19:58
vendethiel [Coke]: thank you! :) 19:59
[Coke] vendethiel: exporting to github... 20:01
github.com/coke/paraplegic/ 20:05
vendethiel [Coke]: thank you :-) 20:10
[Coke]: were grammars not implemented then? 20:12
the code is pretty short, for the rest
oh, my bad, it just has this .pg extension -- that confused me
[Coke] vendethiel: this is ancient ancient code. 20:21
AlexDaniel masak: no!! Here is what it's like to be a good language designer www.artima.com/weblogs/viewpost.jsp?thread=98196 20:28
sorry, couldn't resist
masak :P
kudos for springing Python on me, and not PHP
masak .oO( T_PAAMAYIM_NEKUDOTAYIM ) 20:30
AlexDaniel I thought that everyone already agreed that PHP is the best language out there, so the next is…
dalek kudo/nom: 3b1aa2e | lizmat++ | src/core/IO/Handle.pm:
Introduce IO::Handle.supply

Change an open IO::Handle into an on-demand Supply, so you can now also say: "words".IO.open.supply.lines.tap: { .say } . TIMTOWTDI
vendethiel lizmat++
masak supply.lines! :P 20:31
lizmat first time I could use the new supply { } syntax :-)
masak: Supply.lines already existed for quite some time
masak I'm so out of touch :)
masak .oO( <masak> masak: keep up! )
pink_mist lizmat++ yay, been hoping that would get done :D 20:34
lizmat hmmm... it should probably be called Supply, as it acts as a coercer 20:37
dalek kudo/nom: e1cedd3 | lizmat++ | src/core/IO/Handle.pm:
Rename to Supply so it can be used as a coercer
20:43
AlexDaniel m: say Any < 0 20:48
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Any in numeric context in block <unit> at /tmp/05RXqR5Kr3:1␤False␤»
AlexDaniel m: say Any > 0
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Any in numeric context in block <unit> at /tmp/jsQ_57CDSP:1␤False␤»
AlexDaniel m: say Any == 0
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Any in numeric context in block <unit> at /tmp/aEqrf9qsBo:1␤True␤»
AlexDaniel hm 20:49
m: say Any eq 'a'; 20:50
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Any in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/HjqLdRZ6ep:1␤False␤»
AlexDaniel I don't understand this error message. Is it just me?
timotimo wow, "words".IO.open.supply.lines.tap: { .say }; that's so concise! :) :)
AlexDaniel: what's the problem in this case?
AlexDaniel timotimo: How should I interpret this: Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at ./test2.pl:4 20:51
lizmat timotimo: it's only part of my secret plan to implement support for any type of line ending in Supply.lines :-)
timotimo m: say Any.^name; say Any.perl; say Any.gist; Any.say
camelia rakudo-moar 9e8b7b: OUTPUT«Any␤Any␤(Any)␤(Any)␤»
timotimo it's unfortunate that it says "Any" in that case 20:52
lizmat AlexDaniel: it feels like the second line is caused by the use of Any in the warning
timotimo because that's also what the value is in this case
ilmari m: Int > 0
camelia rakudo-moar 9e8b7b: OUTPUT«WARNINGS:␤Useless use of ">" in expression "Int > 0" in sink context (line 1)␤Invocant requires an instance of type Int, but a type object was passed. Did you forget a .new?␤ in block <unit> at /tmp/z63KHNPY3f:1␤␤»
lizmat AlexDaniel: or maybe not :-( 20:53
ilmari a bare type name is an undef value of that type
AlexDaniel "can stringify undefined things" – what does this even mean. "if needed" for who? Perhaps I'm an imbecile, but I don't understand a word in this message…
pink_mist AlexDaniel: if the thing it's called on is undefined, it needs to be stringified, and it can be! 20:54
AlexDaniel pink_mist: ooooh 20:55
pink_mist: OK, now I know how to read it! 20:56
AlexDaniel scratches his head 20:57
nine m: enum Foo (1, 2, 3);
camelia ( no output )
AlexDaniel well, you know what… I'll submit a bug report since I find it less than awesome. Probably just a little bit of rephrasing will do the trick 20:58
nine m: enum Foo (1, 2, 3); my Foo $foo = 2; say $foo;
camelia rakudo-moar 9e8b7b: OUTPUT«Type check failed in assignment to $foo; expected Foo but got Int␤ in block <unit> at /tmp/neJOu1Y4dD:1␤␤»
nine m: enum Foo (1, 2, 3); my Foo $foo = Foo::2; say $foo;
camelia rakudo-moar 9e8b7b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/UZGSc8gVMw␤Two terms in a row␤at /tmp/UZGSc8gVMw:1␤------> 3enum Foo (1, 2, 3); my Foo $foo = Foo::7⏏052; say $foo;␤ expecting any of:␤ infix␤ infix stopper␤ postfix…»
mst AlexDaniel: tweaking error messages for clarity is an aggravating but essential contribution 20:59
AlexDaniel but the problem I was going to talk about is a little bit different
look, Any == 0 – True, Ane eq '' – True
everything else is false
it feels like it is a leftover after the time when '0' was False 21:00
is it true?
pink_mist m: say 0 == False 21:01
camelia rakudo-moar 9e8b7b: OUTPUT«True␤»
nine m: enum Boolean <Falser Truer>; say Falser;
camelia rakudo-moar 9e8b7b: OUTPUT«Falser␤»
nine m: enum Boolean <Falser Truer>; say Falser.WHAT;
camelia rakudo-moar 9e8b7b: OUTPUT«(Boolean)␤»
nine m: enum Boolean <Falser Truer>; say Falser.HOW;
camelia rakudo-moar 9e8b7b: OUTPUT«Perl6::Metamodel::EnumHOW.new␤»
nine m: enum Boolean <Falser Truer>; say Falser.^attributes>>.name;
camelia rakudo-moar 9e8b7b: OUTPUT«($!key $!value $!value)␤»
nine Two $!value attributes?
lizmat nine: that's possible, if they are of different types 21:02
dalek ecs: 7934ea4 | PerlJam++ | S11-modules.pod:
minor typo fix
21:03
nine m: use nqp; enum Boolean <Falser Truer>; say nqp::getattr(Truer, '$!value');
camelia rakudo-moar 9e8b7b: OUTPUT«===SORRY!===␤Unknown QAST node type NQPMu␤»
lizmat PerlJam: braking the speed of sound :-)
AlexDaniel so, in otherwords, should Any == 0 be True?
pink_mist I thought it was 21:04
lizmat well, in P5 tradition, yes
with a warning :-)
masak m: class C { has $1value }; class D is C { has $!value }; say D.^attributes>>.name
camelia rakudo-moar 9e8b7b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/P73NGuRCWL␤Cannot declare a numeric variable␤at /tmp/P73NGuRCWL:1␤------> 3class C { has $17⏏5value }; class D is C { has $!value }; s␤»
lizmat m: say Str == 0 21:04
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Str in numeric context in block <unit> at /tmp/KNDdOQeZwX:1␤True␤»
masak m: class C { has $!value }; class D is C { has $!value }; say D.^attributes>>.name
camelia rakudo-moar 9e8b7b: OUTPUT«($!value $!value)␤»
lizmat m: say Int eq ''
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Int in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/DRo_I3cGcP:1␤True␤»
AlexDaniel lizmat: why? When '' and 0 both were falsey, it probably made sense. But currently it looks a bit unexpected 21:05
lizmat ah, *very* good point!
AlexDaniel that's what I was trying to say 21:06
lizmat m: say ?"" 21:06
camelia rakudo-moar 9e8b7b: OUTPUT«False␤»
lizmat m: say ?0
camelia rakudo-moar 9e8b7b: OUTPUT«False␤»
AlexDaniel hmmmmmmm?
lizmat but their still False ?
I think you're mistaken with:
m: say ?"0"
camelia rakudo-moar 9e8b7b: OUTPUT«True␤»
lizmat *that* used to be false 21:07
AlexDaniel ahhhhhh
pink_mist m: Any eq "0"
camelia rakudo-moar 9e8b7b: OUTPUT«WARNINGS:␤Useless use of "eq" in expression "Any eq \"0\"" in sink context (line 1)␤Use of uninitialized value of type Any in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/pdYj…»
pink_mist m: say Any eq "0"
camelia rakudo-moar 9e8b7b: OUTPUT«Use of uninitialized value of type Any in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/fp89IfYjfm:1␤False␤»
AlexDaniel lizmat: right! I did!
thanks!
timotimo hm, if i had asked jnthn how exactly those things were supposed to be done, i would have been interested in hooking up the grammar and syntax for shaped arrays
i wonder if that's difficult?
masak timotimo: Try It And See? 21:08
PerlJam masak: How do you get the fully qualified names for those attributes?
timotimo mhm 21:10
ilmari m: class Foo { has $!vaue } Foo.^attributes[0].^attributes
camelia rakudo-moar 9e8b7b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YGPiNcQzJ9␤Strange text after block (missing semicolon or comma?)␤at /tmp/YGPiNcQzJ9:1␤------> 3class Foo { has $!vaue }7⏏5 Foo.^attributes[0].^attributes␤ expecting any of:␤ infix␤ …»
ilmari m: class Foo { has $!vaue }; Foo.^attributes[0].^attributes
camelia ( no output )
ilmari m: class Foo { has $!vaue }; say Foo.^attributes[0].^attributes 21:11
camelia rakudo-moar 9e8b7b: OUTPUT«Method 'gist' not found for invocant of class 'BOOTSTRAPATTR'␤ in block <unit> at /tmp/f37hXgz0xG:1␤␤»
PerlJam oh, nevermind, the package is stored as part of the attribute
ilmari m: class Foo { has $!vaue }; say Foo.^attributes[0].^attributes>>.name 21:11
camelia rakudo-moar 9e8b7b: OUTPUT«($!name $!rw $!ro $!required $!has_accessor $!type $!container_descriptor $!auto_viv_container $!build_closure $!package $!inlined $!box_target $!positional_delegate $!associative_delegate $!why)␤»
masak m: class C { has $!value }; class D is C { has $!value }; for D.^mro -> $class { for $class.^attributes(:local) -> $attr { say "$class.^name() $attr" } } 21:12
camelia rakudo-moar 9e8b7b: OUTPUT«D $!value␤C $!value␤»
masak PerlJam: ^
nine m: enum Boolean <Falser Truer>; say Falser.^attributes>>.package; 21:14
camelia rakudo-moar 9e8b7b: OUTPUT«((Boolean) (Boolean) (Int))␤»
PerlJam still awkward though
lizmat m: dd (1,2) xx 5 # with the 1 arg rule, I would expect (1,2,1,2,1,2,1,2,1,2) here
camelia rakudo-moar 9e8b7b: OUTPUT«((1, 2), (1, 2), (1, 2), (1, 2), (1, 2)).Seq␤»
PerlJam nine: Are you working on making True ~~ Int and Bool ~~ Int ?
nine PerlJam: yes
masak nine++
lizmat nine: would you agree with ^^^ 21:15
mst awwaiid: did you get anywhere?
PerlJam nine: I look forward to seeing how you make it so. I thought it would be some lowish hanging fruit but when I looked at it the other night, it didn't turn out well.
nine PerlJam: yes, it's full of challenges :)
masak it's not LHF, it's fraught 21:16
mst "it's only hanging low until the relevant parts of your anatomy retract in fear"
nine lizmat: if you see xx as infix:<xx>(\list, \repeat) then it's not a single arg anymore. When in doubt I kept the input structure in place, since it's very easy to explicitly flatten the result and impossible to do the opposite
btyler mst: RE newline method calls? github.com/rakudo/rakudo/commit/cb...ceec2c74de 21:17
lizmat nine: by that argument push( @a, @b ) would also not be single arg
masak except if you consider @a the invocant of .push, and thus special 21:18
no such argument can be made for infix:<xx>
mst btyler: so what means I can do $foo.bar() .baz() now?
btyler mst: yep 21:19
mst *that
masak m: say dd (1, 2).&infix:<xx>(5)
camelia rakudo-moar 9e8b7b: OUTPUT«((1, 2), (1, 2), (1, 2), (1, 2), (1, 2))␤Nil␤»
masak :)
mst btyler: excellent
masak wow, I have never called an operator as a method before. I'm gonna use this from now on.
dalek kudo-star-daily: 996608a | coke++ | log/ (9 files):
today (automated commit)
btyler m: gist.github.com/kanatohodets/af74a...34a4bc8ff8 21:21
camelia rakudo-moar 9e8b7b: OUTPUT«bar called 1 times␤bar called 2 times␤bar called 3 times␤bar called 4 times␤»
btyler mst ^
btyler (just to make sure we're talking about the same thing) 21:21
pmurias AlexDaniel: there is a lot of value in consistency
mst btyler: yes, that's exactly what I wanted :D 21:22
AlexDaniel pmurias: I agree, but what made you say so?
pmurias AlexDaniel: you posting a link to Guido arguing that functional programing style things should be removed from python 21:22
AlexDaniel pmurias: I mean, which one of my messages are you commenting on? :)
ah 21:23
dalek kudo/nom: f142d7d | ugexe++ | src/core/CompUnitRepo/Local/Installation.pm:
Allow CURLI loading of .pm extension modules

CURLI currently writes the manifest such that it may use 'pm' *or* 'pm6' as the key
21:24
kudo/nom: a41b719 | lizmat++ | src/core/CompUnitRepo/Local/Installation.pm:
Merge pull request #542 from ugexe/patch-1

Allow CURLI loading of .pm extension modules
AlexDaniel pmurias: well, as far as I can see it's not that much about consistency rather than just “I don't like functional programming”. And that's OK, but everyone is different… 21:25
PerlJam AlexDaniel: oddly, you are not the first to make that observation about Guido 21:26
pmurias removing functional programming style things from python makes things more consistent
and the python language makes them ugyly 21:27
* ugly
dalek ast: 1753a2b | usev6++ | S04-statements/ (2 files):
Replace more eval-dies-ok with throws-like (S04)
AlexDaniel pmurias: correct, but at the same time it doesn't really mean that such consistency (which is basically about removing features) will make the language better. Which is why the left the things intact, I guess. 21:30
or maybe it was just because a lot of people were crying about it too much, I don't know
pmurias AlexDaniel: IMHO there are two different ways of designing things
[Coke] m: say so any Any or all on &
camelia rakudo-moar 9e8b7b: OUTPUT«False␤»
AlexDaniel [Coke]: what?! 21:31
[Coke] whistles innocently.
masak m: say so not Cool or .WHAT
camelia rakudo-moar 9e8b7b: OUTPUT«True␤»
pmurias AlexDaniel: piling good things on top of each other or carefully choose a small elegant mix of things
AlexDaniel: both of those ways work 21:32
AlexDaniel: at least for programming languages and board games ;)
AlexDaniel pmurias: I don't see which way includes timtowtdi 21:33
masak pmurias: reminds me of zoo.cs.yale.edu/classes/cs422/2014/...mperor.pdf
pmurias timtowdi is just piling good things without much concern for consistency
PerlJam Coke: we haven't had any obfuscation contests yet and you're already trying to win!
AlexDaniel PerlJam: oh! Wait a minute…
“<PerlJam> AlexDaniel: You clearly win the Perl6 obfuscation contest ;)” 21:34
PerlJam Well, it's you an Coke in the lead then :) 21:35
s/an/and/
AlexDaniel for those who don't remember, the code was
m: say [::]/\/\/\/\/\/\[:/
camelia rakudo-moar 9e8b7b: OUTPUT«12␤»
pink_mist oh god
lizmat m: say so not Cool without Exception 21:36
camelia rakudo-moar 9e8b7b: OUTPUT«True␤»
AlexDaniel sometimes the output is different but I don't remember why
pmurias AlexDaniel: Perl 6 is just an attempt to refine the pilling of goods features philosophy of Perl 5 by perfecting every thing on the pile and making them all consistent 21:36
AlexDaniel pmurias: but there are so many new features! 21:37
AlexDaniel what is “on”? 21:41
m: on
camelia rakudo-moar 9e8b7b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_R2pMKtpxJ␤Calling on() will never work with declared signature (&setup)␤at /tmp/_R2pMKtpxJ:1␤------> 3<BOL>7⏏5on␤»
lizmat .tell FROGGS added tie-breaking logic to gist.github.com/lizmat/f3807956c35.../revisions
yoleaux lizmat: I'll pass your message to FROGGS.
masak m: use Test; sub we($) {}; is so not Cool, so say we(all())
camelia rakudo-moar 9e8b7b: OUTPUT«all()␤ok 1 - ␤»
masak m: use Test; sub we($) {}; is so not Cool, so say we all()
camelia rakudo-moar 9e8b7b: OUTPUT«all()␤ok 1 - ␤»
pmurias AlexDaniel: a bigger pile of good stuff is better
lizmat .tell FROGGS is that something you can agree to?
yoleaux lizmat: I'll pass your message to FROGGS.
pink_mist pmurias: and then you get PHP :P 21:42
pmurias pink_mist: PHP is just piling crap 21:42
ilmari pink_mist: no, that's if you forget the "good" part
lizmat AlexDaniel: it appears "on" is not documented on doc.perl6.org 21:44
masak 'night, #perl6
AlexDaniel lizmat: well, that's why I asked
hoelzro o/ masak 21:45
PerlJam There is no "on"
lizmat github.com/perl6/specs/blob/master...rrency.pod # some text about on near the end 21:46
PerlJam: oh, but there is
just not documented
afaics
dalek kudo/nom: 59b5a4b | TimToady++ | src/core/Range.pm:
allow shifting and scaling of Range values

Since it's actually kind of difficult to do correctly otherwise and maintain endpoint exclusions, we now allow basic arithmetic operations on a Range to clone the Range and modify the endpoints in order to shift an interval arithmetically or expand/contract it geometrically.
21:48
dalek ast: 139c10c | TimToady++ | S02-types/range.t:
test new arithmetic ops on intervals
21:49
c: 1f5443d | (Ronald Schmidt)++ | lib/Language/traps.pod:
change typo mofify to modify
21:52
ilmari m: say (0.5..5.0).list
camelia rakudo-moar 9e8b7b: OUTPUT«(0.5 1.5 2.5 3.5 4.5)␤»
TimToady this doesn't prevent people from asking for nonsense, of course :) 21:54
ilmari was thinking scaling a range would scale the interval too 21:55
TimToady nope, that way lies madness
dalek c: 5068ab3 | lizmat++ | WANTED:
Add "on" to the WANTED list
21:56
lizmat $ 6 'dd ^10 + 5'
5..^15
cool :-)
ilmari m: say (1..10) «/» 2 21:57
camelia rakudo-moar 9e8b7b: OUTPUT«(0.5 1 1.5 2 2.5 3 3.5 4 4.5 5)␤»
ilmari how long does it take from a commit to land until camelia runs it?
TimToady depends on where in the hour it is, but I expect this one in about half an hour 21:58
maybe 15 minutes
er, 25, I mean
TimToady starts recompile at 7 after the hour, and usually takes til about 20 after or so 21:59
(last I knew)
timotimo huh, so if it's a range it won't turn into a number any more when used with arithmetic operations? 22:00
lizmat timotimo: wrt to the .min / .max optimisation: are there a large number of numbers involved? 22:01
timotimo: maybe an approach that wouldn't reify all the values in one go would be better ? 22:02
TimToady timotimo: it still numifies the same
timotimo 9 values in my case
TimToady: yeah, but not with infix + and - apparently
TimToady the situation never arose in the test suite, as a data point
timotimo OK 22:03
lizmat_ m: dd +^10 22:04
camelia rakudo-moar 9e8b7b: OUTPUT«-11␤»
timotimo haha
that's a different operator :)
lizmat_ yeah :-) 22:05
dalek kudo/nom: e503dfc | lizmat++ | src/core/Range.pm:
Use the features of .clone
TimToady one of those things you might write in a repl but almost never in real code 22:05
timotimo a big performance penalty in my code arises from the way i grab neighbouring fields in my 2d array 22:06
timotimo i just index into values located "outside" the array and catch that with // Inf 22:07
because .min will make the Inf "disappear"
lizmat timotimo: do you use a slice?
timotimo i do not
lizmat AT-POS instead of [] ?
timotimo no
lizmat you could try that
timotimo i write it like that because it looks a bit less bleh :)
the problem really is that it throws the exception and i resolve it with //
at least it causes deoptimizations 22:08
lizmat timotimo: in the past (long, long ago, when writing a dungeon game) I resolved this by actually having out of bounds elements with a value 22:11
that would indicate border in a dispatch table
timotimo yes, that's a very common way to do this kind of thing
add 2 to each dimension and index with 1
er, i mean: starting with 1
lizmat yup, something like that
timotimo the worst thing for this program is that it leaks something that is tracked by the garbage collector and ends up with a gen2 root put in place for it 22:12
the garbage collection time rises steadily
i've had it reach 100ms after perhaps a minute of execution
hm. i'm actually quite curious to see how the performance changes when i remove all SDL2 stuff from that 22:13
lizmat gnight, #perl6!
TimToady o/ 22:14
timotimo gnite lizmat 22:15
can i just say 22:16
i'm *so* glad the whole reify crap is gone
TimToady no, you can't just say that 22:19
timotimo #perl6 is a free country
you can't tell me what i can or can't tell you!
TimToady you can't *just* say that, obviously
timotimo pff, are you making fun of my ability to say more than just one thing? 22:20
TimToady ayup
timotimo nobody says what i say has to be right, or not funny
TimToady we don't have anyone named nobody around here 22:21
gfldex ohai!
timotimo nobody's named that
gfldex 00:21 [freenode] -!- Nick nobody is already in use
o.0
pink_mist what about anybody?
somebody?
everybody! 22:22
TimToady m: say (1..10) * 10 22:31
camelia rakudo-moar 9e8b7b: OUTPUT«100␤»
TimToady slow recompile...
AlexDaniel m: say (3..15) * 2 22:37
camelia rakudo-moar 9e8b7b: OUTPUT«26␤»
TimToady camelia not recompiling for some reason 22:44
dalek ast: be4fc4f | TimToady++ | S03-operators/precedence.t:
tests to make sure . has proper precedence
22:46
flussence happy (belated) birthday, TimToady! (I've just caught up on 2 days of backlog, finally understand what the "one-arg rule" is now...) 22:47
dalek kudo/nom: 140f3c9 | TimToady++ | src/Perl6/Grammar.nqp:
don't really need the fake precedence level

since left-to-right associativity makes . happen after prefix anyway, and now we have the tests to prove it.
gfldex m: my @a = (1..2,4..5).flat.map({$_, ''}); @a.perl.say; my %s = @a; %s.perl.say; 22:52
camelia rakudo-moar 9e8b7b: OUTPUT«[(1, ""), (2, ""), (4, ""), (5, "")]␤{"1 " => $(2, ""), "4 " => $(5, "")}␤»
gfldex m: my @a = (1..2,4..5).flat.map({slip $_, ''}); @a.perl.say; my %s = @a; %s.perl.say; 22:53
camelia rakudo-moar 9e8b7b: OUTPUT«[1, "", 2, "", 4, "", 5, ""]␤{"1" => "", "2" => "", "4" => "", "5" => ""}␤»
ShimmerFairy TimToady: ah, so nqp does the wrong thing, then? (Also, there's no tcuc, but I don't think a cadr/cdar/etc. style collection of casing methods would be a bad thing) 23:00
yoleaux 15:56Z <TimToady> ShimmerFairy: no, tc is by definition only for initial caps; use tcuc if you want to uppercase everything
ShimmerFairy Also, was that "faking precedence" issue related to rakudo having a fake 'unary' associativity? 23:02
mr_ron m: my @a = (1..2,4..5).flat.flatmap({$_, ''}); @a.perl.say; my %s = @a; %s.perl.say; 23:17
camelia rakudo-moar 9e8b7b: OUTPUT«[1, "", 2, "", 4, "", 5, ""]␤{"1" => "", "2" => "", "4" => "", "5" => ""}␤»
timotimo m: my @field = [(^2).roll(5 + 2)] xx (5 + 2); @field[*;0] = Inf; say @field; 23:19
camelia rakudo-moar 9e8b7b: OUTPUT«[[Inf 0 0 1 0 0 1] [(Any) 1 1 1 1 0 0] [(Any) 1 0 1 1 1 1] [(Any) 0 0 1 0 1 1] [(Any) 0 1 0 0 1 0] [(Any) 0 0 1 0 1 1] [(Any) 1 1 1 0 1 0]]␤»
timotimo m: my @field = [(^2).roll(5 + 2)] xx (5 + 2); @field[*;0] = Inf xx *; say @field;
camelia rakudo-moar 9e8b7b: OUTPUT«[[Inf 0 0 1 0 1 0] [Inf 1 1 0 0 0 0] [Inf 0 0 1 0 0 1] [Inf 0 0 1 0 1 0] [Inf 1 1 0 1 1 1] [Inf 0 1 1 0 1 1] [Inf 1 0 1 0 0 0]]␤»
timotimo m: my @field = [(^2).roll(5 + 2)] xx (5 + 2); @field[*;*-1] = Inf xx *; say @field;
camelia rakudo-moar 9e8b7b: OUTPUT«[[0 0 0 1 1 0 Inf] [1 1 0 0 1 1 Inf] [1 0 1 0 1 1 Inf] [0 0 0 1 0 0 Inf] [0 0 0 1 1 1 Inf] [0 0 0 0 0 0 Inf] [1 0 1 1 0 0 Inf]]␤»
timotimo huh? why do i get "cannot modify an immutable num" locally ...
oh
m: my @field = [(^2).roll(5 + 2)] xx (5 + 2); @field[0] = Inf xx (5 + 2); @field[*;*-1] = Inf xx *; say @field; 23:20
camelia rakudo-moar 9e8b7b: OUTPUT«Cannot modify an immutable Num␤ in block <unit> at /tmp/mDtfFM705a:1␤␤»
timotimo i don't understand why this happens; is my code wrong?
m: my @field = [(^2).roll(5 + 2)] xx (5 + 2); @field[0] = Inf xx (5 + 2); say @field;
camelia rakudo-moar 9e8b7b: OUTPUT«[(Inf Inf Inf Inf Inf Inf Inf) [0 1 1 1 0 0 1] [0 1 1 1 0 1 1] [1 1 1 1 1 1 1] [1 0 0 1 0 0 1] [1 1 0 1 1 1 0] [0 1 1 0 0 0 1]]␤»
timotimo ah, i see
AlexDaniel say (3..15) * 2 23:24
m: say (3..15) * 2
camelia rakudo-moar 9e8b7b: OUTPUT«26␤»
timotimo i'm a tiny bit surprised the script still seems to cause lots of deopt in postcircumfix:<[ ]> 23:34