»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:01 RabidGravy left
sortiz I'm distracted reading the loader code. 00:01
00:08 firstdayonthejob left
timotimo moritz: were you +1 or -1 on "turn /etc back into etckeeper-enabled git repo"? 00:11
00:12 firstdayonthejob joined 00:13 adu joined
timotimo i wonder what happened on that one day where there was a gigantic amount of traffic: www.p6c.org/stats/testers.perl6.org 00:16
perhaps that was when testing was being done? 00:17
ugexe looks to be mostly googlebot 00:19
testing would be the blank user agent i would think
timotimo you think we don't set a user agent when we submit panda test reports? 00:22
00:23 firstdayonthejob left
dalek pan style="color: #395be5">perl6-examples: 5282a5d | timotimo++ | template/head.html:
remove jquery, jquery-ui and search.js, as they aren't used here (404)
00:25
ugexe i know so
timotimo OK
Hotkeys Is it still common practice to do 'use v6' ?
or should the perl version just be in META.info 00:26
ugexe use v6 gives you a decent warning when you `perl` it 00:27
timotimo i wonder if we ought to provide /apple-touch-icon.png and/or /apple-touch-icon-precomposed.png
ugexe: yeah, as opposed to use v6.c, which perl5 explodes when it sees that
ugexe its probably best for bin scripts without extensions 00:28
00:31 mkz left, cdg left
timotimo looks if examples.perl6.org successfully gets updated 00:31
raiph m: my Mu $foo = 1; for ^1e6 { $foo = $foo + 1 }; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«6.4864783␤» 00:32
raiph m: my int $foo = 1; for ^1e6 { $foo = $foo + 1 }; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«6.5606549␤»
raiph timotimo: can you have camelia show a use of int or str or other native type that speeds code up? 00:33
or anyone else of course :)
timotimo if someone wants to fix things: 00:35
categories/euler/prob047-gerdr.pl - has nativecall related "potential difficulties" 00:36
actually, just look through the build log will ya :P
00:36 espadrine left
ugexe my int @a = 1..100; for @a { my $x = $_; } # this is actually slower 00:38
raiph ugexe: slower was going to be my second request 00:39
timotimo travis-ci.org/perl6/perl6-examples - someone can look through this and see what's going wrong there
ugexe: native arrays are still rather slow, iirc 00:40
rudi_s Hi. I'm looking for a way to "join" IO::Paths. E.g. $path ~ '/' ~ $file which takes care of choosing '/' for me and just works. Did I miss something in IO::Path?
yoleaux 1 Dec 2015 21:09Z <FROGGS> rudi_s: please pull all the things and rebuild rakudo, Pointer is rw works now like shown in this test: github.com/rakudo/rakudo/commit/2b5c41e94f
timotimo well, native multi-dim arrays are tremendously slow at the moment
rudi_s: you want "catpath"
ugexe $io-path.child('xxx') 00:41
timotimo or that
rudi_s Ah, IO::Spec. Thanks.
AlexDaniel m: my int@a; 00:42
camelia ( no output )
AlexDaniel m: myint@a;
camelia rakudo-moar e3b1dd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/cw9YzaSB7E␤Two terms in a row␤at /tmp/cw9YzaSB7E:1␤------> 3myint7⏏5@a;␤ expecting any of:␤ infix␤ infix stopper␤ statement end␤ statement modifier␤ …»
AlexDaniel :(
rudi_s So I guess it's not recommended to use IO::Path as path container and instead I should use just Str seeing that IO::Spec returns Strings.
00:43 mkz joined
raiph timotimo: thx re native array tip 00:43
timotimo i may actually be wrong about native arrays, though
i haven't spent proper time on that
raiph er, native multidim arrays, is that what your last comment is about? 00:44
(ie emphasis on multidim)
timotimo well, native multidim arrays really are crazy slow
ugexe rudi_s: use .child()
timotimo regular native arrays, not 100% sure if they're slow
rudi_s ugexe: Where can I find documentation for that? 00:45
00:45 wamba left
raiph m: my @a[1e3;1e3]; @a>>++; say now - INIT now 00:45
camelia rakudo-moar e3b1dd: OUTPUT«(timeout)» 00:46
raiph m: my @a[1e1;1e1]; @a>>++; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«Type check failed in binding @dims; expected Positional but got Any␤ in block <unit> at /tmp/RvcHaB7R92 line 1␤␤»
timotimo m: my @a[10;10]; @a>>++; say now - INIT now 00:47
camelia rakudo-moar e3b1dd: OUTPUT«Type check failed in binding @dims; expected Positional but got Any␤ in block <unit> at /tmp/HqUxFSFxzb line 1␤␤»
ugexe rudi_s: github.com/perl6/specs/blob/master...pod#child-
timotimo i think that's just NYI
ugexe doh, did someone take down the metacpan elastic search? 00:48
on hack
timotimo it's probably just not rebootsafe 00:49
vim -E -s -c 'let g:html_no_progress=1|syntax on|set noswapfile|set bg=light|set ft=perl6||runtime syntax/2html.vim|wq! /tmp/gOJMLFDfnj|quit' -cqa /tmp/g6EnonQCzE 2>/dev/null >/dev/null
this command seems kind of spinning there
it's now at almost 5 minutes CPU time spent
00:50 pdcawley_ joined
rudi_s ugexe: Ah, nice. Didn't find it on doc.perl6.org 00:50
sortiz llfourn, I think I have a clue, and a possible fix
00:51 adu left 00:53 pdcawley left
timotimo examples.perl6.org/build-log/build-...0+0000.log - failed ;( 00:53
github.com/stmuk/p6-Text-VimColour...our.pm#L28 00:54
that's the line in question
i wonder if that's a bug; that fail inside a LEAVE phaser doesn't work properly? 00:55
looks like andreoss introduced that? perhaps? 00:56
skids m: sub a { 42.say; LEAVE { return "foo" } }; a(); # no probably not a bug
camelia rakudo-moar e3b1dd: OUTPUT«42␤Attempt to return outside of any Routine␤ in sub a at /tmp/T4uj5JrP43 line 1␤ in block <unit> at /tmp/T4uj5JrP43 line 1␤␤»
skids Sould be an X::AdHoc.new(...).throw 00:58
raiph timotimo: I'm guessing there's no current example of native types speeding code up more than about 10% or so. Does that sound about right?
skids for loops I think? 00:59
rudi_s Lets say I have an absolute path and a relative path and I want to join them. How can I do this with IO::Path or IO::Spec? 01:00
01:00 sufrostico left
rudi_s catdir/catpath/join seem to work only with either only directories or just a single file. 01:00
skids I think IO::Spec is a dead end, I've seen mumurs about it getting killed off.
.child I think. 01:01
m: "/etc".IO.child("foo").say 01:02
camelia rakudo-moar e3b1dd: OUTPUT«"/etc/foo".IO␤»
01:02 shicheng left
raiph m: my ($foo, $bar) = <a b>; for ^1e6 { $ = $foo ~ $bar }; say now - INIT now 01:02
camelia rakudo-moar e3b1dd: OUTPUT«7.95860273␤»
raiph m: my str ($foo, $bar) = <a b>; for ^1e6 { $ = $foo ~ $bar }; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«7.42987849␤» 01:03
raiph m: my ($foo, $bar) = 1, 2; for ^1e6 { $ = $foo + $bar }; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«6.3440703␤»
raiph m: my int ($foo, $bar) = 1, 2; for ^1e6 { $ = $foo + $bar }; say now - INIT now
rudi_s skids: The question is, if it works correctly if "foo" is an IO::Path or a path with multiple elements. It seems to work fine here, but I'd feel better if it was specified, that it works with more than just a single file name.
timotimo raiph: depends strongly on what the minimum size of code is that you'd accept
camelia rakudo-moar e3b1dd: OUTPUT«6.8162347␤»
raiph timotimo: my focus is the "use native types" bit of the p6doc performance page 01:04
timotimo: I'm thinking it might be best to drop mention of native types for now 01:05
skids m: my str ($foo, $bar) = <a b>; my int $a; while $a++ < 1000000 { $ = $foo ~ $bar }; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«0.428320␤»
skids m: my str ($foo, $bar) = <a b>; my $a; while $a++ < 1000000 { $ = $foo ~ $bar }; say now - INIT now
camelia rakudo-moar e3b1dd: OUTPUT«0.60979299␤»
skids There are actually a few places where native types are slower IIRC. 01:06
raiph skids: thx. about 30% speedup due to use of int 01:07
skids Probably more, considering the concat.
timotimo as i said multiple times before, our inlining currently has gigantic problems with native ints 01:08
dalek pan style="color: #395be5">perl6-examples: 38822ca | timotimo++ | lib/Pod/Htmlify.pm6:
when vim color highlighting fails, try to continue.
skids I can only get about 30 minutes into reading MoarVM and compile guts before I get totally lost. 01:09
mspo "Chapter 1" ...(30 mintes later) ^H^H^H^H^H^H^H^H^H^H^H^H
timotimo skids: i can answer lots of questions if you like 01:13
raiph Do you expect there to be, using current Rakudo, ways to use natives to make 50% or better memory savings even if the code is slower?
timotimo potentially. sadly, we don't have code to remove the taking of LexRefs yet. they also cause memory churn, definitely. but they tend to be thrown out with the minor collections. 01:14
01:14 avenj left
skids Very large array[int32] and such I imagine might do it. 01:15
timotimo i'd really like for rakudobrew to compile moarvm with a higher -j count ...
ah, yeah
that's likely to be better than arrays of Int or arrays of Any
though remember that we save a bit of space when an Int's content fits into 32bit
skids But still there's a Scalar around it. 01:16
timotimo oh, inside an Array, yeah
good point
those are definitely long-living
skids rudi_s: I don't see 'fee/fie'.IO.child('foo/fum') tested in roast so unfortunately that behavior isn't part of 6.c I'm afraid. 01:19
rudi_s skids: Thanks for looking! I think for now I can live with the "uncertainty". 01:20
Hotkeys does perl 6 have tail call optimization? 01:21
timotimo not really, no
the language definition doesn't forbid or require it, and rakudo-moar doesn't do it yet 01:22
Hotkeys are there plans to?
just curious
timotimo i *think* when we get trace jit it'll be possible to build TCO
Hotkeys mmkay 01:23
dalek pan style="color: #395be5">perl6-examples: 7717b27 | timotimo++ | lib/Pod/Htmlify.pm6:
use $_ rather than $! inside CATCH block (because $! gets unset)
01:26
skids TCO tends to become a golden hammer, not that we shouldn't have it. 01:28
TimToady "anything that is allowed is mandatory" is the failure mode there :) 01:30
skids reminds himself to make some erudite joke about Maslow's hammer and Chekhov's gun some day. 01:35
Heheh. "Birmingham screwdriver" 01:36
rudi_s Can I prepend to a string? Like "a" op= "b" yields "ba"? 01:37
timotimo .tell stmuk since you're the genius behind VimColour, could you try to figure out why at least one of the files in project euler from the perl6-examples library makes it spin at 100% cpu for ever(?) ... i think it might be prob008-duff2.pl 01:38
yoleaux timotimo: I'll pass your message to stmuk.
timotimo .tell stmuk it looks like there's three files in euler that do failure ... 01:39
yoleaux timotimo: I'll pass your message to stmuk.
sortiz .tell llfourn I think that for the 'target-package' path, INDIRECT_NAME_LOOKUP should include CORE:: in the test for initialize "$thing". 01:40
yoleaux sortiz: I'll pass your message to llfourn.
atweiden m: my %h = :level-one(:level-two(:level-three(:is-level-three(True)))); sub deref(%h, *@k) is rw { my $h := %h; $h := $h{$_} for @k; $h }; deref(%h, qw<level-one level-two>)<is-level-two> = True; say %h.perl;
camelia rakudo-moar e3b1dd: OUTPUT«Cannot modify an immutable Mu␤ in block <unit> at /tmp/SD73eUQwvv line 1␤␤»
01:40 yqt left
atweiden why does `deref(%h, qw<level-one level-two>)<is-level-two> = True` fail? isn't the container returned `is rw`? 01:40
m: my %h = :level-one(:level-two(:level-three(:is-level-three(True)))); sub deref(%h, *@k) is rw { my $h := %h; $h := $h{$_} for @k; $h }; for deref(%h, qw<level-one level-two>) -> $at is rw { say 'got this: ', $at.perl } 01:42
camelia rakudo-moar e3b1dd: OUTPUT«Parameter '$at' expected a writable container, but got Pair value␤ in block <unit> at /tmp/wDdcQp8ebC line 1␤␤»
timotimo collectd now shows information about our apache's status on www.p6c.org
heh. the failure generated when calling "fail" inside a LEAVE phaser gets leaked and later pops up when it gets garbage-collected 01:43
01:44 zpmorgan left
timotimo .tell FROGGS i set the cronjob to rsync over the html files of cpandatesters to only run every 15 minutes rather than every 5 01:48
yoleaux timotimo: I'll pass your message to FROGGS.
timotimo does monitoring all of this make me a worse sysadmin? %) 01:50
skids m: my %h = :level-one(:level-two({:level-three(:is-level-three(True))})); sub deref(%h, *@k) is rw { my $h := %h; $h := $h{$_} for @k; $h }; deref(%h, qw<level-one level-two>)<is-level-two> = True; say %h.perl # A Pair is not a Hash is why 01:52
camelia rakudo-moar e3b1dd: OUTPUT«{:level-one(:level-two({:is-level-two, :level-three(:is-level-three)}))}␤»
skids atweiden: ^^^
ugexe m: my $a = "a"; $a .= &reverse("b"); say $a; # rudi_s heh 01:53
camelia rakudo-moar e3b1dd: OUTPUT«[b a]␤»
rudi_s ugexe: ;-)
01:54 jvcakg left
atweiden skids: the brackets, i see :) 01:55
timotimo it bothers me greatly that it still says "Generated on 2015-12-29T16:53:26.645083Z" at the bottom of examples.perl6.org
oh, i "just" had to ctrl-r 01:56
01:56 abaugher left 01:58 abaugher joined
timotimo and now there should be fewer 404s on that domain 01:58
from now on, going forward
02:01 dfcarpenterak left 02:06 Herby_ joined
Herby_ Evening, everyone! 02:06
skids o/ 02:07
Herby_ \o
dalek c: 12e1234 | raiph++ | doc/Language/performance.pod:
Remove stubbed native types section.

Native types don't yet perform well enough.
02:08
02:08 molaf joined
raiph hi Herby_ 02:08
02:10 apiw joined 02:17 apiw left 02:18 apiw joined, Ben_Goldberg joined 02:20 molaf_ joined 02:23 molaf left 02:36 colomon left 02:38 colomon joined 02:41 Actualeyes joined 02:45 ilbot3 left 02:46 molaf_ left 02:47 ilbot3 joined 02:56 PerlJam joined
Herby_ If anyone is feeling bored and wants to give Perl 6 a little exposure, another programming puzzle is up: www.reddit.com/r/dailyprogrammer/c...ing_legal/ 02:57
Juerd submitted a great solution for Monday's puzzle 02:59
AlexDaniel geez, a parade of ass long solutions 03:00
03:00 sno left
Herby_ Yep. And there is only 19 of them so far, so any submissions should get lots of eyes 03:01
03:02 noganex_ joined 03:03 El_Che left 03:05 El_Che joined 03:11 kid511 left, apiw left
llfourn .botsnack 03:11
yoleaux :D
01:40Z <sortiz> llfourn: I think that for the 'target-package' path, INDIRECT_NAME_LOOKUP should include CORE:: in the test for initialize "$thing".
03:12 Herby_ left, avenj joined, avenj left, avenj joined
llfourn sortiz: You there? 03:17
03:20 Herby_ joined
llfourn .tell sortiz ++ that is an interesting solution to the immediate problem. It should work. I think that IO::Socket::SSL inserting itself into SETTING::IO::Socket might be dangerous for setting versioning reasons. I think that not being able to introspect a CompUnit to see what's in it is another problem. 03:23
yoleaux llfourn: I'll pass your message to sortiz.
03:24 pmqs left
AlexDaniel m: my @a = < a b c d >; for @a { $_ = 42 if /a/ }; say @a 03:28
camelia rakudo-moar e3b1dd: OUTPUT«[42 b c d]␤»
AlexDaniel m: my @a = [< a b c d >, < a a >]; for @a { for @$_ { $_ = 42 if /a/ } }; say @a 03:29
camelia rakudo-moar e3b1dd: OUTPUT«Cannot assign to an immutable value␤ in block at /tmp/xHmIb1O8aM line 1␤ in block <unit> at /tmp/xHmIb1O8aM line 1␤␤»
AlexDaniel how can I make it work?
skids my @a = [[< a b c d >], [< a a >]]; for @a { for @$_ { $_ = 42 if /a/ } }; say @a 03:30
m: my @a = [[< a b c d >], [< a a >]]; for @a { for @$_ { $_ = 42 if /a/ } }; say @a
camelia rakudo-moar e3b1dd: OUTPUT«[[42 b c d] [42 42]]␤»
skids <a b c d> is a list.
AlexDaniel ooh 03:31
skids You only get an Array in the @a = by virtue of the @a.
AlexDaniel riight
03:34 pmqs joined 03:35 Ben_Goldberg left 03:42 ryan__ joined
AlexDaniel Herby_: almost have it 03:43
Herby_ \o/
03:43 colomon left, ryan__ left 03:45 n0tjack joined
AlexDaniel Herby_: oh damn, I forgot about diagonals… 03:47
let's see if there is any easy way to get diagonal slices…
03:48 colomon joined
AlexDaniel besides that it is pretty short, readable and clever 03:48
03:49 n0tjack left
AlexDaniel Herby_: take a look: gist.github.com/AlexDaniel/b952b73284a083973802 03:50
Herby_ Nice job! 03:51
AlexDaniel yeah but diagonals
all I have to do is slap it into the main loop and everything else should work all by itself
Herby_ hmm
Juerd How do you slurp stdin? 03:52
AlexDaniel m: say slurp;
camelia rakudo-moar e3b1dd: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGall␤Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;␤Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí␤I mo dhiaidh bhí gleanntáin ghlas’ G…»
Juerd juerd.nl/i/6d47b64b7714a0d92552d9b602c2f19d.png is my first working regex but I want a grammar :) 03:53
Oh, just slurp. Heh. :)
I tried $*IN.slurp...
AlexDaniel geez, reversi with grammars
who knows, maybe that's going to work :) 03:54
Hotkeys is there a negated version of << in regex? 03:55
(word boundary)
Herby_ AlexDaniel: I'm not much help on the diagnols but you're solution is nice, clean and easy to read 03:59
03:59 noganex joined
AlexDaniel Herby_: I think that I'll hack it up quickly. Just a couple of minutes :) 03:59
04:02 addison_ left 04:03 noganex_ left 04:04 El_Che left, El_Che joined
Hotkeys oh I didn't realize the cached trait is experimental 04:06
AlexDaniel Hotkeys: it wasn't for a long time 04:08
04:09 uruwi left
AlexDaniel phah, got half of the board diagonally… 04:12
04:13 raiph left
AlexDaniel yup, it actually works. Couldn't believe my eyes 04:14
Herby_ good stuff. Got a link? 04:17
AlexDaniel not yet
Herby_: well, if you split the board in half diagonally then it is (for ^@map -> $c { (@map[$c-$_;$_] for ^($c*2 + 1)) }) 04:18
Herby_: so you get something like this: gist.github.com/AlexDaniel/b952b73284a083973802 04:19
Hotkeys Why is cached experimental now? 04:20
AlexDaniel Herby_: but that's just 1 half of all diagonals…
Hotkeys: it was too buggy
Hotkeys ah
AlexDaniel Hotkeys: most of the time it was actually fine, actually. But there were some corner cases
/actually//, actually
Hotkeys ah
Juerd Damn, grammars are hard 04:21
Is there a way to pass a capture to subrules?
Ah, found it 04:23
<other-token: $<capture>>
skids wonders if timotimo is still conscious today. 04:25
Hotkeys woo 04:27
just finished my translation of the porter stemming algo
time to make it into a proper module
04:42 addison_ joined 04:46 addison_ left 04:49 raiph joined
Hotkeys so I have some regexes that I use in a sub in this modules 04:51
er
never mind
Juerd Okay, my solution is posted 04:56
And my head hurts now
I'm not sure this was a good idea :)
04:58 skids left
Hotkeys what is this for juerd 04:59
Juerd www.reddit.com/r/dailyprogrammer/c...ing_legal/ 05:00
Hotkeys ah
Juerd Please have a look at my grammar and say something nice, so I can go to bed
:P
Herby_ Looks good! 05:03
Juerd Thank you :D 05:04
It is not good, though :(
Just spotted a bug.
Herby_ minor detail :)
Juerd Output is weird
It shifts the board somehow 05:06
Herby_ headed to bed, good luck! 05:07
05:09 Herby_ left 05:11 addison joined 05:16 addison left 05:19 jack_rabbit left 05:23 jack_rabbit joined 05:29 raiph left
Juerd Okay, so .comb(8) does not what I expect 05:31
+do
atweiden m: my @a = [ [ [ 'd', 'delta' ], [ 'e', 'echo' ], [ 'f', 'foxtrot' ] ], [ [ 'g', 'golf' ], [ 'h', 'hotel' ], [ 'i', 'india' ] ] ]; my $target-to-splice-in = [ [ 'a', 'alpha' ], [ 'b', 'bravo' ], [ 'c', 'charlie' ] ]; @a.splice(0, 0, $target-to-splice-in); say @a.perl; 05:34
camelia rakudo-moar e3b1dd: OUTPUT«[["a", "alpha"], ["b", "bravo"], ["c", "charlie"], [["d", "delta"], ["e", "echo"], ["f", "foxtrot"]], [["g", "golf"], ["h", "hotel"], ["i", "india"]]]␤»
atweiden this keeps stripping the outer []
tried it a bunch of different ways now 05:35
Juerd Argh, this must be a bug
If I copy/paste the string and use the REPL, I get exactly what I want
atweiden m: my @a = [ [ [ 'd', 'delta' ], [ 'e', 'echo' ], [ 'f', 'foxtrot' ] ], [ [ 'g', 'golf' ], [ 'h', 'hotel' ], [ 'i', 'india' ] ] ]; my @target-to-splice-in = [ [ 'a', 'alpha' ], [ 'b', 'bravo' ], [ 'c', 'charlie' ] ]; @a.splice(0, 0, $@target-to-splice-in); say @a.perl;
camelia rakudo-moar e3b1dd: OUTPUT«[["a", "alpha"], ["b", "bravo"], ["c", "charlie"], [["d", "delta"], ["e", "echo"], ["f", "foxtrot"]], [["g", "golf"], ["h", "hotel"], ["i", "india"]]]␤»
atweiden m: my @a = [ [ [ 'd', 'delta' ], [ 'e', 'echo' ], [ 'f', 'foxtrot' ] ], [ [ 'g', 'golf' ], [ 'h', 'hotel' ], [ 'i', 'india' ] ] ]; my @target-to-splice-in = [[ [ 'a', 'alpha' ], [ 'b', 'bravo' ], [ 'c', 'charlie' ] ]]; @a.splice(0, 0, $@target-to-splice-in); say @a.perl; 05:37
camelia rakudo-moar e3b1dd: OUTPUT«[["a", "alpha"], ["b", "bravo"], ["c", "charlie"], [["d", "delta"], ["e", "echo"], ["f", "foxtrot"]], [["g", "golf"], ["h", "hotel"], ["i", "india"]]]␤»
atweiden m: my @a = [ [ [ 'd', 'delta' ], [ 'e', 'echo' ], [ 'f', 'foxtrot' ] ], [ [ 'g', 'golf' ], [ 'h', 'hotel' ], [ 'i', 'india' ] ] ]; my @target-to-splice-in = $[[ [ 'a', 'alpha' ], [ 'b', 'bravo' ], [ 'c', 'charlie' ] ]]; @a.splice(0, 0, $@target-to-splice-in); say @a.perl;
camelia rakudo-moar e3b1dd: OUTPUT«[[["a", "alpha"], ["b", "bravo"], ["c", "charlie"]], [["d", "delta"], ["e", "echo"], ["f", "foxtrot"]], [["g", "golf"], ["h", "hotel"], ["i", "india"]]]␤»
Juerd Probably a rakudobug, but I can't golf it: www.reddit.com/r/dailyprogrammer/c...al/d0462hz change /.**{8}/ to 8 and it invents an extra '-' 05:40
But if you put the string there manually, it works correctly with .comb(8)
05:40 Cabanossi joined 05:42 davido joined
Hotkeys Juerd: what does it do when you don't put the string there manually? 05:44
05:46 jack_rabbit left, addison joined 05:47 mattp__ joined 05:48 jack_rabbit joined 05:50 khw left, addison left 05:53 raiph joined 05:58 adu joined 06:00 jack_rabbit left 06:03 simcop2387 left 06:04 simcop2387 joined 06:39 raiph left 06:54 atweiden left
AlexDaniel .tell Herby I cannot find any meaningful way to get diagonals… 06:56
yoleaux AlexDaniel: I'll pass your message to Herby.
AlexDaniel .tell maybe you'll have a better luck
yoleaux AlexDaniel: I'll pass your message to maybe.
06:59 geraud left 07:14 adu left 07:15 azawawi joined
azawawi hi 07:15
good morning #perl6 07:16
07:19 CIAvash joined 07:24 hippie left 07:25 hippie joined
AlexDaniel .tell b2gills oh, maybe you'll find something clever. Given a two-dimensional array, I can iterate over its rows with 「for @a], over its columns with 「for (@a[*;$_] for ^@a)」. But what would be the easiest way to iterate over its diagonals? 07:25
yoleaux AlexDaniel: I'll pass your message to b2gills.
AlexDaniel .tell b2gills I cannot manage to find a solution that wouldn't make me want to kill myself after an hour 07:26
yoleaux AlexDaniel: I'll pass your message to b2gills.
07:27 ugexe left, wamba joined 07:31 azawawi left 07:32 FROGGS joined 07:33 n0tjack joined 07:34 firstdayonthejob joined 07:36 SHODAN left 07:37 n0tjack left, darutoko joined 07:40 davido left 07:41 sjoshi joined 07:43 nakiro joined 07:44 davido joined, SHODAN joined 07:46 RabidGravy joined
RabidGravy MARNING! 07:48
Hotkeys GNINRAM 07:53
07:53 nebuchadnezzar joined
moritz \o 07:53
timotimo: re /etc and etckeeper: I don't care much either way, as long as we keep passwords out of the git repo 07:54
07:54 ugexe joined
El_Che moritz: vault seems to be nice for that kind of stuff 07:55
07:55 SHODAN left
[TuxCM] test 22.275 07:59
test-t 12.050
csv-parser 51.057
07:59 ely-se joined
[TuxCM] NLUUG asked me to do a perl6 talk on CSV on their conference 07:59
08:01 SHODAN joined
moritz nice 08:02
[TuxCM] still need approval of boss 08:03
moritz [TuxCM]: fwiw I've used your Perl 6 Text::CSV "in production" (not for fun, but for getting things done) already
[TuxCM] \o/
added .header yesterday
El_Che same here (nothing fancy though)
[TuxCM] which I used in production all week
moritz (for GPW2016, I needed a list of speaker's email addresses; So I wrote a small Perl 6 program to extract them from the two CSV export from talks and from users) 08:04
08:05 davido left 08:06 sno joined
El_Che We are the certificate authority for the University. We migrated to a new CA provider. We had a list om certificates, several expiration dates and contact e-mails for domains still using the other CA (about 2000). I used Text::CSV to convert this info into a json file that my application uses to send expiration warnings and keep state (how many warnings, left, has it migrated, uses a new certificate, etc) 08:06
[TuxCM] :) 08:07
El_Che so, nothing fancy, but thx nevertheless :) 08:08
08:09 AlexDaniel left
El_Che would love to see it enter rakudo star 08:13
[TuxCM] would that imply my involvement, or does it just mean that it enters a list 08:21
moritz for now, it'd just enter a list 08:22
[TuxCM] than I have no objections at all
moritz later we might want to get module authors to make releases, so that we can include released versions in the star distribution
[TuxCM] I would then need instructions for that. I'll probably nag lizmat on a PM when that is due 08:24
El_Che my docker images start from the rakudo star release + panda install MyModule 08:25
so the less moving pieces the best
better
[TuxCM] => $work
08:38 firstdayonthejob left
dalek osystem: 702e42d | (John Spurr)++ | META.list:
Add Lingua::EN::Stem::Porter
08:40
osystem: 1086b6e | (Fritz Zaucker)++ | META.list:
Merge pull request #155 from johnspurr/patch-1

Add Lingua::EN::Stem::Porter
RabidGravy Grooviness 08:41
08:47 fireartist joined, espadrine joined
Hotkeys woo 08:48
first proper contribution to the ecosystem
^^^
08:52 dakkar joined 08:55 zakharyas joined
lizmat jnthn: I just found something strange wrt int/Int parameter passing: 08:56
m: my int @a; my int $i = 42; for ^100000 { @a.push($i) }; say now - INIT now # int to int candidate is slower
camelia rakudo-moar e3b1dd: OUTPUT«0.0876879␤»
lizmat m: my int @a; my Int $i = 42; for ^100000 { @a.push($i) }; say now - INIT now # Int to Int candidate is much faster
camelia rakudo-moar e3b1dd: OUTPUT«0.034061␤»
RabidGravy eugh 08:57
lizmat jnthn: I verified the int candidate of native array.push *is* selected
(in the int case)
lizmat profiles
hmmm...in the profile, the Int candidate is green, and the int candidate is yellow 09:02
09:02 Amendil joined
lizmat so the int candidate is not jitted 09:02
only speshed 09:04
09:05 wamba left
lizmat also: the int case has 100000 intlexref allocations with 4 gc runs, the Int case none and only 1 GC run 09:07
09:07 Zero_Dogg left, Zero_Dogg joined
RabidGravy sounds like a good candidate for some toshing up :) 09:10
lizmat yeah, it's just that I'm not sure whether this is on jnthn's radar already or not 09:11
09:13 Skarsnik joined
Skarsnik Hello 09:14
09:17 kjs_ joined 09:18 kjs_ left
lizmat Skarsnik o/ 09:18
09:19 kjs_ joined
RabidGravy HARR 09:20
lizmat hmm.... removing the int candidate does *not* improve things atm 09:22
it even looks like it makes it slightly worse 09:23
so, so much for the idea of removing stuff to make things faster (now)
Skarsnik ^^ 09:24
09:27 espadrine left, Guest4943 is now known as luiz_lha
dalek kudo/nom: 9983c2c | lizmat++ | src/core/Exception.pm:
Make X::TypeCheck a little more informative

by showing the actual value passed if possible, truncated if too long
09:33
lizmat afk for a few hours& 09:34
09:34 n0tjack joined
RabidGravy as a completely OT thing does anyone know about avahi or mDNS things in general? 09:34
I want to arrange for a device to have a "cname" or some alternative name that I can use for a web server routing 09:35
er virtual host 09:36
09:36 cpage_ joined 09:38 Actualeyes left
RabidGravy it seems that you can add static hosts but that blows the advantage of mDNS 09:38
09:39 n0tjack left 09:55 rindolf joined
jnthn lizmat: That's not odd once you know that spesh doesn't know much about native refs yet :) 09:55
10:10 espadrine joined
arnsholt Hotkeys++ # Porter stemmer; very cool! 10:15
10:17 apiw joined
Hotkeys Ty 10:17
arnsholt: I'm probably gonna implement the big optimization stuff tomorrow or Friday depending on if I finish some other things I'm doing 10:18
There's a few things recommended to speed things up from the original paper that I'm going to try out 10:19
But this is a functional implementation so that's good enough for tonight
I also should probably write some sort of test for it other than the use test but I'll deal with that later 10:21
RabidGravy tsk 10:22
arnsholt That's the right order to do things in, though. Make it right, then make it fast 10:23
RabidGravy except for the tests, without the tests you can't do the second part in the secure knowledge you aint broke nothin 10:24
Hotkeys Fair enough 10:25
I've got a ~30000 word list that I'm currently testing it against but I feel like that would be overkill for the actually .t test 10:26
arnsholt Nah, not necessarily 10:27
RabidGravy how long does it take?
Hotkeys About 11 seconds on my computer
From the repl
arnsholt Or take a subset for normal tests, and another set for a full test
RabidGravy nah, thats fine, I'd stick that in
I've got *single* tests that take longer than that in some of my modules 10:28
Hotkeys Where would I put the word list, /resources ?
RabidGravy er t/data is what I tend to use
Hotkeys Alright
I'll stick it in in the morning
RabidGravy if you put it in resources it'll get installed with the module
Hotkeys Ah
arnsholt I'd probably just shove the whole thing in the test file, TBH 10:29
RabidGravy there is that option
Hotkeys The word list and its matching expected output?
That'd be quite long
10:30 jevin joined
Hotkeys Somewhat unrelated, what is "Koalatee" on modules.perl6.org 10:31
RabidGravy In URI::Template I have several test files in t/data - in some of the Audio::* things there are whole audio files
something like has a compliant META file, has a README, has tests 10:32
Hotkeys Ah
10:32 hankache joined
hankache hello #perl6 10:32
Hotkeys Hello
RabidGravy a sort of adaptation of Kwalitee, something not quite "quality"
Hotkeys Yeah this is my first time really contributing a module to any ecosystem not just perl 6 10:33
I'm quite lazy wrt testing on personal projects
Or yknow, wrt to everythibg 10:34
10:34 DrForr left
Hotkeys See: my very empty github profile 10:34
10:34 DrForr joined
RabidGravy not doing tests is actually anti-lazy, it's making a problem that you are going to have to fix later 10:34
Hotkeys Fair enough 10:35
It's lazy in the right now 10:36
Just not future lazy :p
DrForr Incidentally, github.com/drforr/perl6-App-prancer is up in ts first cut on github.
RabidGravy but I've been making software for a living for a quarter of a century and I'm definitely a slacker, making tests early is a good thing 10:37
Hotkeys Once I'm happy with this module I'm probably going to do the snowball stemming algo
hankache There is a new German translation of perl6intro.com available at de.perl6intro.com Your review would be highly appreciated. PR's are welcomed: github.com/hankache/perl6intro
RabidGravy do it! do it!
10:37 n0tjack joined
Hotkeys I've been making software for a living for 0 years so far 10:37
:p
RabidGravy HotKeys, when you're done with that you know we''ll insist you make a full-text indexer ;-)
jnthn DrForr: That README would be 75% more awesome if it had a little example in it :)
Skarsnik DrForr, you should add an example
Hotkeys RabidGravy: heh 10:38
Skarsnik damn jnthn
DrForr Gimme 5 minutes :)
jnthn :P
Hotkeys I need to contribute all the Lingua::* modulea
jnthn Though I can see there's Pod with a synopsis so nice
Hotkeys modules*
RabidGravy DrForr, is there any point me sending a PR for the missing dependency in the META and the wrong test files? 10:40
I'll have a play later
Hotkeys I should probably do more developing in the hours that aren't immediately before I get into bed 10:41
10:41 n0tjack left, ocbtec joined
Hotkeys I had to write the use test and update the readme from my phone from bed 10:41
(To add the pretty Travis build image) 10:42
10:42 apiw left
RabidGravy woah! I struggle to type code on a 10" tablet, I don't think I'd even try on a phone 10:43
Hotkeys Well I realized I forgot to actually put anything in the use test
And I couldn't sleep with a failing initial build :p 10:44
Skarsnik hm, NC expose a refresh sub. look a bit too generic as a name x) 10:45
RabidGravy I think it's for stuff like rw structs
Hotkeys Maybe next year I'll do gsoc 10:46
Once I've beefed up my github a little bit with Lingua modules
10:46 apiw joined 10:47 donaldh joined 10:48 zpmorgan joined
Hotkeys And also assuming there are perl 6 people mentoring gsoc next year 10:49
Skarsnik hm, how I skip test without making it complaining that I did not run all the test in the plan? 10:50
DrForr Hotkeys: I'm willing, has there been any response from Google?
Hotkeys Hm?
RabidGravy Skarsnik, "if $gonna-skip { skip-rest }
DrForr Re: GSOC. 10:51
Hotkeys I'm not doing it this year, possibly next year though
RabidGravy assuming you have a plan
DrForr Ah.
RabidGravy if not then just do "plan 9; skip-test; exit"
Skarsnik skip-rest sound like it will skip everything after x)
RabidGravy well yes
Hotkeys Thanks though DrForr
10:52 hankache left
RabidGravy well for a certain number there is "skip $why, $number = 1" 10:52
right, off out shopping 10:53
Skarsnik I have if something { tests... } else { skip these}, and skip-rest make it happend empty tests x)
*append 10:54
Oh I needed to put a second argument to skip x) 10:56
10:57 RabidGravy left
Hotkeys I should sleep soon 11:01
11:03 sno left, sno joined
Skarsnik damn githux does not show conflict when a pr can't be merged 11:06
11:06 hankache joined
DrForr perl6-App-prancer updated with a more useful README. 11:13
11:13 hankache left 11:14 kaare_ joined 11:18 rindolf left 11:19 itaipu joined 11:20 kjs_ left
Hotkeys I'm gonna sleep 11:20
Night all o/
11:26 rindolf joined 11:33 apiw left
rudi_s What is the convention for doc.perl6.org for method signatures? Is the self object added as parameter or not? e.g. IO::Path's absolute method's signature is method absolute (IO::Path:D: $base = ~$*CWD --> IO::Path:D) but shouldn't it be method absolute (IO::Path:D:, IO::Path:D: $base = ~$*CWD --> IO::Path:D) when comparing it with other methods on the same page? 11:36
(Btw. the return value is wrong, it's a Str - which I find a little confusing to be honest, but the spec also says it's a string. Any idea why it's not an IO::Path?)
moritz rudi_s: the convention for doc.perl6.org is to be as exact as possible 11:39
rudi_s moritz: Well, for methods it's not clear to me if the this-object is necessary as it's already documented in the document itself. E.g. I'm looking at the page of IO::Path, so every method call uses it. 11:40
11:40 apiw joined 11:44 CIAvash left 11:45 apiw left 11:49 kid51 joined
moritz rudi_s: it's necessary, because without the :D you'd be allowed to call the method on the class, not on an instance 11:50
11:54 espadrine left 11:55 kjs_ joined
rudi_s moritz: I'm just asking because the spec (S32-setting-library) doesn't use it. 12:01
*S32-setting-library/IO.pod
12:02 kjs_ left 12:03 kjs_ joined
rudi_s (Btw. what is the recommended patch policy for doc.perl6.org - patches per mailing list, github pull requests, patches here?) 12:03
moritz rudi_s: per pull request 12:04
rudi_s: the specs aren't very precise about their invocant signatures 12:05
rudi_s: or you can push directly, if you tell me your github ID first :-)
lizmat de.perl6intro.com # hankache++ 12:10
and Sören Laird Sörries++
masak "But we’ll have to live with two Pythons for quite a while. If we manage to not kill each other over it, everyone’s gonna be fine." -- hynek.me/articles/python3-2016/ 12:11
12:11 rupert160 joined
masak (hi, #perl6) 12:11
12:12 espadrine joined
TEttinger I'm sure plenty of bodybuilders have at least two pythons 12:12
12:14 wamba joined 12:22 sufrostico joined 12:28 rindolf left 12:29 ely-se left 12:31 rupert160 left 12:34 FROGGS left
timotimo TEttinger: they also carry around two guns everywhere they go 12:35
(heya #perl6)
12:38 ely-se joined
lizmat timotimo o/ 12:39
masak o/
dalek kudo/nom: 0270966 | lizmat++ | src/core/ (2 files):
Streamline Buf some more

  - add int/Int candidates for push|append
  - improve error message for non-ints being pushed/appended
  - add unshift/prepend methods with same features
  - make sure the X::TypeCheck is known at the right time
12:42
lizmat $ 6 'Buf.new.push(1,2,3,4,"a")' 12:43
Type check failed in pushing element #4 to Buf; expected uint8 but got Str ("a")
^^ example of improved error message
12:44 sufrostico left
Skarsnik hm 12:45
m: Buf.new.push(2000);
12:45 kjs_ left
camelia ( no output ) 12:45
Skarsnik should it warn that it's too big?
lizmat m: dd Buf.new.push(2000)
camelia rakudo-moar 9983c2: OUTPUT«Buf.new(208)␤»
lizmat no, natives can overflow without further noise (intentionally so, afaik) 12:46
12:47 donaldh left
Skarsnik maybe it should be a pragma to warn about them? 12:49
12:49 itaipu left
Skarsnik can probably help debug some code 12:49
12:52 kid51 left
lizmat if you have an overflow issues, you probably shouldn't be using natiives / Bufs 12:52
12:53 donaldh joined
Skarsnik m: my uint8 $m = 2000; say $m; 12:54
camelia rakudo-moar 027096: OUTPUT«208␤»
Skarsnik It get fixed recently the uint working? x)
m: my uint16 $m = 20000; say $m; 12:55
camelia rakudo-moar 027096: OUTPUT«20000␤»
Skarsnik m: my uint16 $m = 2 ** 16 + 40; say $m;
camelia rakudo-moar 027096: OUTPUT«40␤»
timotimo DrForr: your App::Prancer tests seem a bit ... strange :) 12:58
DrForr: i don't see where the Readline class comes from that it's testing 12:59
DrForr Fine, fine, I'll delete the tests.
12:59 sufrostico joined
timotimo :P 12:59
DrForr I think I've warned a few times that it's crude, that's part of what I meant :)
timotimo :D 13:00
i find it a bit strange to have it called App::Prancer
to me, the App:: namespace always seemed to be about applications that you can install and then immediately run
moritz that's the idea behind it, yes
to distinguish it from libraries
DrForr I suppose I should separate the two bits as well, but that's more admin work. 13:01
Pushed test changes. 13:02
timotimo the "two bits"? 13:03
13:03 TEttinger left
rudi_s moritz: Thanks. Do we want to add the :D to return values in p6doc or is just Bool enough? 13:04
Oh and any idea why absolute() and similar IO::Path functions return a Str and not an IO::Path?
DrForr I just meant separate App::prancer and Prancer::Handler, but since they were developed it seemed easier to just have a single package so I don't have to have two windows open.
rudi_s What should I do if IO::Path implements a method but it's not in the spec? 13:08
timotimo what does App::Prancer do on its own?
Juerd Daaamn, I have the weirdest heisenbug :( 13:09
Add debug prints, and the bug goes away 13:10
rudi_s And in which order do we want to document the functions/methods?
timotimo Juerd: can you try MVM_SPESH_DISABLE=1 in your environment?
DrForr At the moment? Nothing, it's just a driver for the blog application. But that will change, the thing is I want turnkey ability so the user can just type 'bin/prancer run-blog <blog-name> <admin-user> <admin-pass> # and it'll build and launch. Which at the moment probably requires the ::Handler module to be loaded, but could in the future exec() the generated binary.
Skarsnik rudi_s, depend if it's an obscure thing or not. if not add to the doc and add an issue on roast? 13:11
Juerd timotimo: Doesn't fix
DrForr Thus it could be separated easily, but I don't want to do that until I've stabiliized the API.
Juerd Heck, even if I swap two 'say' statements, the bug goes away
rudi_s Skarsnik: roast? 13:12
Skarsnik roast is where the spect test are, if I am right x)
timotimo oh, a blog, eh? 13:13
if it's good, it'll replace wordpress for the weekly at least, maybe the advent calendar :P
rudi_s Skarsnik: Ah, thanks.
What exactly is the official perl6 spec? The .pod files or the test cases? 13:14
jnthn The test suite.
rudi_s Thanks.
DrForr Or whatever app. I'm mangling a Dancer app into shape at work, so this way I've got a test case to work from.
13:18 espadrine left
timotimo OK 13:18
DrForr I'll get it straightened out before actual release, there's still quite a bit of legwork to do but it's just a SMOP at this point. 13:20
Juerd Worst bug golfing experience ever :) 13:21
Down to 21 lines 13:22
13:22 RabidGravy joined
timotimo Juerd: are you using anything "parallel"? .hyper, start, supplies, Proc::Async, ...? 13:22
Juerd Nope
pastebin.com/vCR8exZB 13:23
See what happens with the 3 8's
888 turns into 8888, magically, with the first .comb
Change any of the 8's to something else, and it works fine
Add 'say $board.comb' in the loop, and it works fine
etc.
Turn $board ~= ~$cell into i.e. $board ~= $input.substr(++$, 1), which results in the exact same $board, and no bug. 13:24
Swap the two say $board.comb lines, and it works fine 13:25
timotimo hm. could potentially be something about our implementation of ropes?
could you try putting nqp::flattenropes($board) in there?
Juerd I'm out of time
Maybe later
timotimo i'll try it
jnthn Also not sure if we expose that as an nqp:: op
timotimo just gotta build rakudo first :)
El_Che upgrading a modules with "panda --force install Module_dir_name" stays on the old version untill .perl6 is deleted. Maybe expected, but I am pretty sure regular users will be bitten by that 13:26
timotimo jnthn: when we run the /.**{8}/ over it, it'd flatten, right?
so maybe changing the order of the two can make a difference, or running an "empty" regex over it?
jnthn timotimo: Yeah
13:27 apiw joined
jnthn lunch & 13:28
13:30 sjoshi left
timotimo well, i'd say it's about ropes. putting a regex in front makes both comb versions output the same thing 13:31
masak the 8888 thing sounds like a bug I discovered a while back 13:32
rt.perl.org/Ticket/Display.html?id=123602 13:33
timotimo that's most likely also ropes 13:36
masak yes, that's the common factor. I'm not aware of a third rope-related bug. 13:37
Skarsnik m: gist.github.com/Skarsnik/531748d0f80543c4999e 13:38
camelia rakudo-moar 027096: OUTPUT«Before repeat␤after repeat␤Before repeat␤» 13:39
Skarsnik I am not sure how to golf more
but it's definitly a bug x)
13:39 espadrine joined
Skarsnik adding 0; after the repeat block make it work correctly 13:40
timotimo so it's a lazy list there, eh?
try "sink repeat ..." or something? 13:41
Skarsnik it look similar to the loop bug after x-mas 13:42
masak m: sub foo($c) { return if $c == 0; { say "B $c"; repeat { say "A $c"; foo($c -1) } while 0 } }; foo(3)
camelia rakudo-moar 027096: OUTPUT«B 3␤A 3␤B 2␤»
timotimo it really does look like a lazy evaluation thing goes on there 13:43
m: sub foo($c) { return if $c == 0; { say "B $c"; repeat { say "A $c"; foo($c -1) } while 0 } }; say foo(3).perl
camelia rakudo-moar 027096: OUTPUT«B 3␤A 3␤B 2␤A 2␤B 1␤A 1␤(((Nil,).Seq,).Seq,).Seq␤»
masak agree it's a bug.
timotimo should sink sink that recursively? 13:44
13:46 pmurias joined
timotimo i really don't feel up to the task of rope debugging today 13:51
13:51 cdg joined
Skarsnik Should I just rakudobug this? 13:52
timotimo well, why do we expect repeat/while to be eager?
masak Skarsnik: please. 13:54
13:54 Amendil left
masak timotimo: because it's a statement. and the rule of "last statement is lazy" was too confusing, so it was changed. 13:54
13:54 Amendil joined
timotimo OK 13:54
Skarsnik It's annoying when it's nested inside other stuff (in my case if was inside a given/when block) 13:55
timotimo OK
Skarsnik because it not that easy to see that it's the 'end' of the sub
timotimo right 13:57
masak fortunately, that rule doesn't apply anymore. it was changed to "statements are eager" with 251282d9f834b305afd095e11a9ddd17ad0f51a5 on 2013-10-07. longer ago than I remember. 13:59
timotimo wow
14:02 apiw left 14:04 kjs_ joined 14:07 TreyHarris joined 14:08 hankache joined
RabidGravy I can only thing the IETF are trolling us tools.ietf.org/html/rfc7265 - this is the worst possible representation of iCalendar as JSON 14:09
14:09 apiw joined
RabidGravy I guess that's what happens when you get some software company who don't really care about interoperability to write the spec for you 14:09
dalek kudo/nom: 64ab188 | lizmat++ | src/core/Rakudo/Internals.pm:
Add EXPAND-LITERAL-RANGE to Rakudo::Internals

Expands "a..e" to "abcde", "a..e..i" to "abcdefghi" and "a..ei..k" to "abcdeijk". Based on internal sub in Str, but now without recursion and now also allows returning a list (with each char separately), rather than a string
14:10
kudo/nom: e93a06c | lizmat++ | src/core/Str.pm:
Use new Rakudo::Internals.EXPAND-LITERAL-RANGE

Instead of local subs that needed optimizing
RabidGravy go! go! go!
timotimo .tell grondilu i just got the Image Noise example to run at 5.7 FPS instead of 1.9 FPS by using SDL_RenderPoints and a CArray of int32 instead of SDL_RenderPoint 14:13
yoleaux timotimo: I'll pass your message to grondilu.
14:14 raiph joined, xinming left
timotimo .seen grondilu 14:15
yoleaux I saw grondilu 5 Feb 2016 21:52Z in #perl6: <grondilu> oops ignore that^
hankache yo! 14:16
Skarsnik Hi
dalek kudo-star-daily: 133e5df | coke++ | log/ (9 files):
today (automated commit)
14:19
14:24 skids joined 14:28 kjs_ left 14:29 rindolf joined 14:32 TreyHarris left, TreyHarris joined
fireartist could someone explain what this means in the Mixins docs: "Thus @-sigiled containers will require binding to make the role stick." - what do I have to actually /do/? 14:34
lizmat hmmm... these last changes made Juerd's atbash example 2x faster yet again :-) 14:36
RabidGravy fireartist, depends on what 'do' you want 14:37
timotimo fireartist: that means if you use =, you'll just get assignment, and all values from your custom array/list/thing get copied over into a freshly created Array 14:38
14:38 apiw left
RabidGravy but "@a does Role" works fine 14:39
lizmat commute to Niederrhein.pm meeting&
fireartist RabidGravy: thanks - I somehow didn't realise it was only referring to @arrays - I was worried I would have to special-case any function that accepted a $scalar that might be mixin'd 14:40
RabidGravy: but your explanation makes a lot of sense :-)
RabidGravy no, no, there's plenty of "does" and "but" all over the place
14:41 xinming joined
RabidGravy m: role Foo { method bar() { self.pick(*) }}; my @a = <1 2 3>; @a does Foo; say @a.WHAT; @a.push: 4; say @a; say @a.bar 14:41
camelia rakudo-moar e93a06: OUTPUT«(Array+{Foo})␤[1 2 3 4]␤(4 2 1 3)␤»
RabidGravy still an array but with added Fooness 14:42
14:43 xinming left, ash`_ joined 14:45 apiw joined, krakan joined 14:46 sufrostico left, ash`_ is now known as ash`
skids timotimo: wrt to last night's comments, this is not an entirely atypical experience for me: gist.github.com/skids/0029ab3fe15e354f1378 14:46
14:48 apiw left
timotimo oh, heh 14:48
yeah, i guess i see what's going through your mind when that kind of thing happens
nine skids: did we mention that rakudo's internals are quite hackable? 14:49
14:50 xinming joined
ash` w clkao 14:51
14:51 ash` left
skids nine: :-) 14:51
14:52 apiw joined
timotimo having some trouble binding this function: wiki.libsdl.org/SDL_LockTexture 14:54
14:55 kjs_ joined 14:57 cdg left, apiw left 14:58 xinming left 14:59 xinming joined
timotimo if someone would like to help, have a look at my repo: github.com/timo/SDL2_raw-p6/blob/m...ise.p6#L23 and github.com/timo/SDL2_raw-p6/blob/m...aw.pm#L184 15:00
15:01 zakharyas left 15:02 iH2O joined 15:04 pierrot left 15:10 pierrot joined 15:13 prammer joined 15:26 pierrot left 15:38 apiw joined, AlexDaniel joined
AlexDaniel . 15:38
15:39 cdg joined
masak 15:39
'night, #perl6 15:40
15:41 molaf joined, hankache left
Juerd In a regex or grammar, can you capture something that wasn't in the original string? 15:42
15:45 iH2O left
nine Juerd: sounds like a job for an actions object? 15:47
Juerd I considered that, but that's a lot of code for one tiny thing :)
15:47 apiw left
Juerd It's for a code example at www.reddit.com/r/dailyprogrammer/c...ing_legal/ 15:47
jnthn You can { make 42 } within a closure in the regex, and pull it out with .made later 15:48
Juerd If I can make 'cell-tested' capture a '*' instead of the '-' that it actually matched, I could get rid of the inner loop of the main code.
jnthn Don't need to go all the way to having an actions class
Juerd jnthn: Ooh, now that's what I hoped to hear :)
15:50 buharin joined, sufrostico joined 15:57 alpha123 joined, kjs_ left 16:06 sjn_ joined
Juerd www.reddit.com/r/dailyprogrammer/c...al/d0462hz 16:06
16:06 prammer left
Juerd Thanks, jnthn :) 16:06
16:08 prammer joined 16:10 adu joined, fireartist left
b2gills AlexDaniel: I can't think of a really nice way to write it either, sorry. 16:11
yoleaux 07:25Z <AlexDaniel> b2gills: oh, maybe you'll find something clever. Given a two-dimensional array, I can iterate over its rows with 「for @a], over its columns with 「for (@a[*;$_] for ^@a)」. But what would be the easiest way to iterate over its diagonals?
07:26Z <AlexDaniel> b2gills: I cannot manage to find a solution that wouldn't make me want to kill myself after an hour
AlexDaniel :(
16:14 kjs_ joined, apiw joined
Skarsnik timotimo, I am not to understand the function, it give you the pixels or give it to it? x) 16:15
16:15 khw joined 16:17 sjn is now known as sjn__ 16:18 sjn_ is now known as sjn 16:24 kjs_ left 16:25 sjn__ left
TreyHarris How do I assign a list of string => string pairs into a hash? And how can I create a new kv in a hash, given a string => string pair? 16:26
16:26 nakiro left, apiw left
Skarsnik that look like a weird stuff 16:26
my Pair %hash{List}; my %hash{(1, 2, 3)} = a => 1; ? 16:27
jnthn TreyHarris: For the first, just assignment should do it
m: my @a = 'a' => 'b', 'c' => 'd'; my %h = @a; say %h<c> 16:28
camelia rakudo-moar e93a06: OUTPUT«d␤»
jnthn And for the second, .push
m: my @a = 'a' => 'b', 'c' => 'd'; my %h = @a; my $p = 'e' => 'f'; %h.push($p); say %h.perl
camelia rakudo-moar e93a06: OUTPUT«{:a("b"), :c("d"), :e("f")}␤»
16:30 apiw joined
TreyHarris jnthn: that's crazy, I swear I tried both those things. I've got a WIP commit trail though, lemme see why it didn't work 16:30
jnthn: thanks though
I had a grammar action that was taking "a=b" lines and turning them into pairs; first I tried to accumulate them and assign them to a hash, then I tried to create the has first and push them one at a time in the action 16:31
I'll check out the WIP and see what was going on, it was prolly something doubledumb.
16:32 ely-se left
Juerd www.reddit.com/r/dailyprogrammer/c...al/d0462hz # now with explanation 16:32
16:34 zakharyas joined 16:40 sno left 16:43 adu left 16:45 apiw left 16:47 dfcarpenterak joined 16:48 zakharyas left
sjn Is there a way to cleverly/automa[tg]ically cast one type into another? 16:50
eg. my URI $homepage = "some.host/mypage"; # Str -> URI 16:51
sjn imagines adding an URI method to the Str class
not sure if that's a nice thing to do, though
16:52 apiw joined
ilmari my URI $homepage .= new("some.host/mypage"); 16:52
rudi_s How can I redirect stdin to /dev/null when using run? 16:53
sjn ilmari: yeah, that's what the URI docs say 16:55
Skarsnik the URI module could extend Str for that probably
16:55 apiw left
sjn Skarsnik: yep, that's what I'm thinking :) 16:55
I'm just asking if it's a nice thing to do. :D'
ugexe m: sub foo(Str(Cool) $path) { say $path.^name; }; foo(IO::Path.new("/home")); # dont think you can coerce with custom types yet though 16:56
camelia rakudo-moar e93a06: OUTPUT«IO::Path is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting line 1␤ in method new at src/RESTRICTED.setting line 32␤ in block <unit> at /tmp/3_vg50NtxV line 1␤␤»
ugexe m: sub foo(Str(Cool) $path) { say $path.^name; }; foo("/home".IO); # dont think you can coerce with custom types yet though
camelia rakudo-moar e93a06: OUTPUT«Str␤»
sjn hm 16:57
sjn is ETOOCLEVERFORMYOWNGOOD 16:58
17:00 raiph left
timotimo Skarsnik: it gives me a pointer to a memory region it manages and i change it 17:01
17:02 prammer left 17:05 prammer joined
sjn rudi_s: Does doc.perl6.org/type/Proc#method_new help with your problem? 17:05
17:06 pmurias left
b2gills rudi_s: add a 「:!in」 If you aren't going to send any data, and 「:!out」 / 「:!err」 to ignore any data from it 17:06
sjn is a little overwhelmed by the Proc class atm. 17:07
ugexe you dont normally invoke a process with Proc.new
17:09 sufrostico left
sjn ugexe: docs make it look like run() is an alias for new() 17:09
17:10 raiph joined
sjn or at least replacable 17:10
ugexe run/shell/qx use Proc.new followed by $proc.spawn
github.com/rakudo/rakudo/blob/nom/...#L137-L138 17:11
sjn right
17:12 prammer left 17:16 dfcarpenterak left, dfcarpenterak joined 17:17 prammer joined 17:19 perlpilot left 17:20 ely-se joined
ugexe perl6 -e 'my $proc = run "perl6", "-e", "1", :out; say ?$proc' # why does the output order of this change if you remove :out? 17:21
with :out its "True\nWARNING: blah blah". without :out its "WARNING: blah blah\nTrue" 17:22
the warning comes on stderr
rudi_s sjn: b2gills: Ah, nice. Didn't know I could use :!in. 17:24
17:24 Zero_Dogg left 17:25 Zero_Dogg joined, Zero_Dogg left, Zero_Dogg joined
ugexe also, why does `my $proc = run "perl6", "-e", "die", :out, :err; $proc.err.close; say ?$proc` work, but not (adding $proc.out.close): `my $proc = run "perl6", "-e", "die", :out, :err; $proc.out.close; $proc.err.close; say ?$proc` 17:27
17:28 sufrostico joined 17:29 espadrine left
ugexe closing .out before .err in these cases affects the exitcode 17:30
ah, to add: `|$proc.out.close;` also makes it work 17:31
(it can be before .err then) 17:32
17:32 pierrot joined
rudi_s Hm. I'm getting deadlocks when I try to capture stdout and stderr. 17:32
s/deadlocks/weird hangs/
ugexe whats your proc code 17:33
rudi_s Wait, have to check if I'm stupid or not.
17:34 dakkar left
ugexe perl6 -e 'my $proc = run("perl6", "-e", "say 100; die(q|failure|)"); say $_ for $proc.out.lines; say $_ for $proc.err.lines; $proc.out.close; $proc.err.close; say $proc' # this shows stdout and stderr 17:34
oops, add :out and :err to run heh 17:35
17:36 prammer left
AlexDaniel m: say 25.min(3) 17:36
camelia rakudo-moar e93a06: OUTPUT«Cannot call min(Int: Int); none of these signatures match:␤ ($: *%_)␤ ($: &by, *%_)␤ in block <unit> at /tmp/Un2jewJglN line 1␤␤»
Peter_R m: say 'my beard'.comb 17:37
camelia rakudo-moar e93a06: OUTPUT«(m y b e a r d)␤»
17:38 beginner joined
rudi_s I'm spawning SSH and it seems to be related to ControlMaster. But I've no idea why it behaves differently when running in Perl6. 17:39
ugexe i wish the RT link on rakudo.org linked directly to perl6 queue
rudi_s: is your code short enough to gist?
AlexDaniel m: my @a = [<a b c>, <d e f>]; say @a[^1 Z; ^1] 17:43
camelia rakudo-moar e93a06: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1AGGQTo3Za␤Missing required term after infix␤at /tmp/1AGGQTo3Za:1␤------> 3my @a = [<a b c>, <d e f>]; say @a[^1 Z7⏏5; ^1]␤ expecting any of:␤ prefix␤ term␤»
AlexDaniel m: my @a = [<a b c>, <d e f>]; say @a[^1 Z[;] ^1]
camelia rakudo-moar e93a06: OUTPUT«Non-QAST node visited BOOTInt␤Weird node visited: BOOTInt␤Weird node in analyze: BOOTInt␤===SORRY!===␤Unknown QAST node type BOOTInt␤»
timotimo so, maybe SDL_LockTexture doesn't work because "Invalid texture"
AlexDaniel m: my @a = [<a b c>, <d e f>]; say @a[^1 »;« ^1]
camelia rakudo-moar e93a06: OUTPUT«5===SORRY!5=== Error while compiling /tmp/r54kRqZXvw␤Bogus postfix␤at /tmp/r54kRqZXvw:1␤------> 3my @a = [<a b c>, <d e f>]; say @a[^1 »7⏏5;« ^1]␤ expecting any of:␤ infix␤ infix stopper␤»
AlexDaniel how can I make that work?
timotimo wow, yeah, initializing the renderer after building the texture for it. great idea.
AlexDaniel m: my @a = [<a b c>, <d e f>]; say @a[.[0];.[1]] for ^1 Z ^1 17:44
camelia rakudo-moar e93a06: OUTPUT«a␤»
AlexDaniel ↑ that's one way to do it, but I'm hoping to find a way to do it without 「for」 17:45
17:46 prammer joined
jnthn AlexDaniel: You'd need || to be implemented to do that, I think, but it ain't 17:47
rudi_s ugexe: pbot.rmdir.de/1lbxjrKt1wWunRGqhDLs2A
AlexDaniel jnthn: || ?
jnthn So need for (or map) for now
AlexDaniel: Variant of | that lets you spice in a multi-dim index
rudi_s Sometimes it doesn't hang, but sometimes it hangs for 30 seconds (this should be the ControlPersist timeout).
But outside of perl6 it always returns immediately.
AlexDaniel jnthn: oooh, okay.
jnthn At least, if I understand what you're trying to do, but I'm currently juggling code in 3 other languages so only half paying attention :P 17:48
AlexDaniel jnthn: but if I can do Z, why can't I do Z; ?
jnthn ; isn't an operator
AlexDaniel but , is?
jnthn Yes
AlexDaniel fine.
rudi_s ugexe: Oh, and it seems like sometimes it hangs forever. 17:49
jnthn 1,2,3 is parsed as the infix:<,> operator, whereas things separated by semis are only accepted in various places in the grammar and parsed by a special <semilist> rule
AlexDaniel m: my @a = [<a b c>, <d e f>]; say @a[0,1;0,1] # hmm
camelia rakudo-moar e93a06: OUTPUT«(a b d e)␤»
AlexDaniel jnthn: ok! Thanks 17:50
rudi_s But most of the time it hangs just 30 seconds.
17:50 maybekoo5 joined
timotimo ah, SDL_GetError always returns "invalid renderer" after setting up a renderer, but it's only a valid error string if the renderer returned was actually NULL 17:51
17:54 rindolf left
dalek osystem: fa89df7 | RabidGravy++ | META.list:
Alter the META of META6
17:54
rudi_s ugexe: Hm. Now I can reproduce it outside of perl6 as well. I'll have to debug this, please ignore it for now. 17:56
ugexe perl6 -e 'my $proc = run("ls", :err); my $err = $proc.err.lines; $proc.err.close; say $err' 17:57
bin lib logotype META6.json README.pod resources t test.pl
readline requires an object with REPR MVMOSHandle in block <unit> at -e line 1
DrForr Aroo? 17:58
ugexe $err.^name is Seq at the end
17:59 firstdayonthejob joined 18:00 Vitrifur joined 18:02 beginner left
ugexe this is the line that causes the readline error: github.com/rakudo/rakudo/blob/5648...le.pm#L132 18:03
18:03 rindolf joined
timotimo i'm getting somewhere! with terrible hack-around-this-crap-code 18:04
(i now corrupt some data)
rudi_s ugexe: Hm. Just checked again. Definately perl6 related.
But ssh -vvv has alsmost the same output (inside perl6 ssh talks about two more file descriptors its setting to Nonblock, but I have no idea if that's related). 18:06
18:07 prammer left
rudi_s So I've no idea how to debug this. 18:08
18:09 SCHAAP137 joined 18:11 prammer joined, buharin left
ugexe rudi_s: first try doing it without capturing stdout and stderr. then capture :err, then just capture :out. this might give insight if its related to :out/:err being buggy 18:12
18:12 rindolf left 18:13 _dolmen_ joined
ugexe theres lots of weird things that go on with procs. i have some that will fail unless the output is captured. othertimes its because i captured one before the other. i cant explain why, i usually just perservere with slight changes till it works :( 18:14
rudi_s :-(
It seems to be stderr. Unless I capture stderr everything works.
timotimo i can't get better than 6fps for the "white noise" code right now 18:15
rudi_s Any idea how to debug that. Having such issues in Perl6 really sucks as spawning processes is essential for me.
ugexe rudi_s: one hack may be to just use `shell` so you can use redirection
rudi_s Not possible in my case, I need it without shell redirection. 18:16
s/redirection/interpolation/ 18:17
Interesting it seems only to happen when ssh spawns a child (the ControlMaster background process).
18:18 donaldh left, rindolf joined
rudi_s Btw. capturing stderr only (and not stdout) doesn't help. 18:18
Only if I capture stdout and stderr it breaks - which is really bad because I need both. 18:19
ugexe is it the capture or close that does it?
github.com/ugexe/zef/blob/master/l...t.pm6#L527 # this is a hack i use to fix a similar situation 18:20
timotimo oh, neat.
daxim I need to know how to look up the [\~] operator (from <perl6advent.wordpress.com/2009/12/...den/>). I know the whole thing is composed, and the tilde part is string concat
timotimo i could actually get white_noise's inner loop jitted and now i'm sitting at almost 7fps
rudi_s ugexe: It seems to be the slurp-rest of stderr. 18:21
So this fix doesn't help :-/ 18:22
ugexe hmmm, .slurp-rest does not get the readline error i mention above like .lines 18:24
rudi_s I teste .slurp-rest and .lines in my case and both cause the same error.
ugexe without :err at all does it print an actual error to terminal? 18:25
TreyHarris ugexe: I just tried that github snippet and I can't get anything out of $proc.err regardless
rudi_s ugexe: No. 18:26
There's no output on stderr.
TreyHarris ugexe: sorry, I meant when I force an error, like:
perl6 -e 'my $proc = run("ls nosuch", :out, :err); my @out = $proc.out.lines; my @err = $proc.err.lines; say @out; say @err'
[]y 18:27
[]
(no 'y' supposed to be there, chat client artifact I guess)
ugexe fwiw it should be run("ls","nosuch" 18:28
TreyHarris smacks head
d'oh. sorry.
perl6 -e 'my $proc = run("ls", "nosuch", :out, :err); my @out = $proc.out.lines; my @err = $proc.err.lines; say @out; say @err' 18:29
[]
rudi_s ugexe: Oh btw., when I use :!in, :out, :merge, perl6 segfaults.
TreyHarris [ls: nosuch: No such file or directory]
ugexe :merge doesnt work
rudi_s strace says, epoll, EBADF
Oh .. nice.
AlexDaniel earlier I was asking how to go through two-dimensional array diagonally. Nevermind, I figured it out! It is very easy!
all you have to do is: ((@map[ .[0];.[1]] for $_ Z .reverse) for |(0 X.. ^@map), |((0 X.. ([R,] 0..^(@map-1))) Z+ 1..^@map ) )
timotimo daxim: did you find out about the [\~] yet? 18:30
daxim no
timotimo it's just a triangle reduce
daxim my question was how to look it up
timotimo no clue, honestly 18:31
look for "reduce" in the docs and find out that its two forms are [op] and [\op]?
AlexDaniel yeah, it is documented somewhere
timotimo i wonder if unicode has a left-leaning triangle that we can use instead of the [\ portion :P 18:32
ugexe rudi_s: if you simply dont close $p.err and $p.out, does it work?
AlexDaniel .u ◺
yoleaux U+25FA LOWER LEFT TRIANGLE [Sm] (◺)
AlexDaniel timotimo: like that?
timotimo yeah 18:33
18:33 zakharyas joined
AlexDaniel timotimo: though the result is more like ◿ 18:33
daxim it's neither on doc.perl6.org/routine/reduce nor on doc.perl6.org/routine/%5B%20%5D
ugexe not closing .out and .err can affect exitcodes, so its not really a solution
18:34 _dolmen_ left
timotimo have you tried .eager on the .lines? 18:35
ugexe seems like *maybe* closing .out and .err *after* your say "STDOUT {$out}" bit may also work
i have (well, |$proc.out.lines) 18:36
AlexDaniel timotimo: perhaps ◹ is more appropriate?
ugexe oh there we go
rudi_s: try this: |$p.err.close; |$p.out.close; 18:37
AlexDaniel daxim: design.perl6.org/S03.html 18:38
daxim: search for “to lazily generate all intermediate results along with the final result, you can backslash the operator:”
daxim: please create an issue here: github.com/perl6/doc/issues/new
skids m: my $len = 8; my @ax1 = |([\,] 0..^$len), |((0..^$len).tail($len - $_) for 0..^$len); my @ax2 = 7 «-« @ax1; @ax1.say; @ax2.say; # As far along as I had gotten, indexes for the ther diagonals.
camelia rakudo-moar e93a06: OUTPUT«[(0) (0 1) (0 1 2) (0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5) (0 1 2 3 4 5 6) (0 1 2 3 4 5 6 7) (0 1 2 3 4 5 6 7) (1 2 3 4 5 6 7) (2 3 4 5 6 7) (3 4 5 6 7) (4 5 6 7) (5 6 7) (6 7) (7)]␤[(7) (7 6) (7 6 5) (7 6 5 4) (7 6 5 4 3) (7 6 5 4 3 2) (7 6 5 4 3 2 1) (7 6 …»
AlexDaniel skids: yeah, I've also noticed that using [\*] is going to help 18:39
skids: instead of «-« you can probably use just X- 18:40
skids I don;t think that keeps structure?
rudi_s ugexe: Doesn't help here .. it hangs when trying to slurp stderr, not on the close.
skids m: my $len = 8; my @ax1 = |([\,] 0..^$len), |((0..^$len).tail($len - $_) for 0..^$len); my @ax2 = 7 X- @ax1; @ax1.say; @ax2.say; # As far along as I had gotten, indexes for the ther diagonals.
camelia rakudo-moar e93a06: OUTPUT«[(0) (0 1) (0 1 2) (0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5) (0 1 2 3 4 5 6) (0 1 2 3 4 5 6 7) (0 1 2 3 4 5 6 7) (1 2 3 4 5 6 7) (2 3 4 5 6 7) (3 4 5 6 7) (4 5 6 7) (5 6 7) (6 7) (7)]␤[6 5 4 3 2 1 0 -1 -1 0 1 2 3 4 5 6]␤»
AlexDaniel hmmmh
skids The hyper's deepmap semantic is in use there. 18:41
18:41 telex left 18:42 telex joined
daxim AlexDaniel, done: issue 402 18:43
skids m: my $len = 8; my @ax1 = |([\,] 0..^$len), |((0..^$len).tail($len - $_) for 0..^$len); my @ax2 = 7 X- @ax1; say @ax1 »+« @ax2 »*» 8; 18:44
camelia rakudo-moar e93a06: OUTPUT«Lists on either side of non-dwimmy hyperop of infix:<+> are not of the same length while recursing␤left: 2 elements, right: 1 elements␤ in block <unit> at /tmp/6sSnmBJfDE line 1␤␤»
AlexDaniel daxim: thank you very much
skids oh. 18:45
m: my $len = 8; my @ax1 = |([\,] 0..^$len), |((0..^$len).tail($len - $_) for 0..^$len); my @ax2 = 7 «-« @ax1; say @ax1 »+« @ax2 »*» 8;
camelia rakudo-moar e93a06: OUTPUT«This Seq has already been iterated, and its values consumed␤(you might solve this by adding .cache on usages of the Seq, or␤by assigning the Seq into an array)␤ in block <unit> at /tmp/NiIokyYtfD line 1␤␤»
rudi_s Btw. how can I capture the exit code. Now when I do out.close my program dies with an exception. try { $p.out.close; } doesn't seem to help.
skids Ah nm
AlexDaniel skids: it looks like there's something wrong 18:48
skids: these lists end with [(6 7), (7)] and [(1 0), (0)] 18:49
skids: unless I'm reading that incorrectly 7;0 is there twice
skids The first lol is the x axes the other lol is the y 18:50
18:51 _mg_ joined
AlexDaniel skids: (6;1, 7;0), (7;0) – right? 18:51
skids: also, can't we just @ax2 = @ax1.reverse ? 18:53
maybe not :} 18:54
skids It's the second list that's wrong the elements are reversed. 18:56
We could probably @ax2 = (@ax1».reverse).reverse 18:57
rudi_s Btw. how can I capture the exit code. Now when I do out.close my program dies with an exception. try { $p.out.close; } doesn't seem to help.
ugexe rudi_s: probably something like `try { CATCH { when X::Proc::Unsuccessful { say "exitcode: {$_.proc.exitcode}"; }; my $proc = run("xxx"); };` 18:58
18:59 sjn left
ugexe but with what we've been seeing today... who knows 18:59
rudi_s ugexe: It dies on the close.
Should't try { $p.out.close } catch all exceptoins?
ugexe it has something to do with when the proc gets sunk or something 19:01
skids AlexDaniel: actually, Just @ax1.reverse does work all things factored.
m: my $len = 8; my @ax1 = |([\,] 0..^$len), |((0..^$len).tail($len - $_) for 0..^$len); my @ax2 = @ax1.reverse; @ax1.say; @ax2.say
camelia rakudo-moar e93a06: OUTPUT«[(0) (0 1) (0 1 2) (0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5) (0 1 2 3 4 5 6) (0 1 2 3 4 5 6 7) (0 1 2 3 4 5 6 7) (1 2 3 4 5 6 7) (2 3 4 5 6 7) (3 4 5 6 7) (4 5 6 7) (5 6 7) (6 7) (7)]␤[(7) (6 7) (5 6 7) (4 5 6 7) (3 4 5 6 7) (2 3 4 5 6 7) (1 2 3 4 5 6 7) (0 1 …»
rudi_s ugexe: Yeah. But the question is, why does try { .. } not catch _all_ exceptions. Did I misread the docs? 19:02
AlexDaniel skids: have you figured out a way to zip that thing into x;y pairs?
skids Like I said, that is as far as I got :-)
Was kinda hoping »Z« would be a thing 19:03
ugexe rudi_s: im not saying you are wrong (i tried the same thing before). more that i think something related to where the proc actually gets sunk affects where the code gets executed 19:04
if you try to use the $proc outside the try it will re-raise the exception i believe
skids (Hyperops are really frustrating to work with with all these consumed Seqs)
AlexDaniel skids: meh. Almost: .say for (@ax1 Z @ax2).map({.[0] »,« .[1] }) 19:05
timotimo skids: »Z,« is potentially a thing
AlexDaniel skids: which Seq is already iterated in this case? I have no idea…
skids Yeah, basically. 19:06
\o/
or the shrug version of that
AlexDaniel just 「.list」-ing a Seq should probably work 19:07
but I'm always surprised to see a seq when I didn't mean it explicitly :) 19:08
skids Tried already.
19:11 addison_ joined
RabidGravy rudi_s, I thought that someone had RTd that already (close on the out of a failed proc dies in an uncatchable way), if you could RT it would be good 19:19
skids m: 'my $len = 8; my @ax1 = |(([\,] 0..^$len).cache), |((0..^$len).tail($len - $_).cache for 0..^$len); my @ax2 = @ax1.reverse; say @ax1.perl; say @ax2.perl; say (@ax1 »,« @ax2).perl.say 19:24
camelia rakudo-moar e93a06: OUTPUT«5===SORRY!5=== Error while compiling /tmp/oPHFzFqIiH␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/oPHFzFqIiH:1␤------> 3 @ax2.perl; say (@ax1 »,« @ax2).perl.say7⏏5<EOL>␤ expecting any of:␤ si…»
skids m: my $len = 8; my @ax1 = |(([\,] 0..^$len).cache), |((0..^$len).tail($len - $_).cache for 0..^$len); my @ax2 = @ax1.reverse; say @ax1.perl; say @ax2.perl; say (@ax1 »,« @ax2).perl.say
camelia rakudo-moar e93a06: OUTPUT«[(0,), (0, 1), (0, 1, 2), (0, 1, 2, 3), (0, 1, 2, 3, 4), (0, 1, 2, 3, 4, 5), (0, 1, 2, 3, 4, 5, 6), (0, 1, 2, 3, 4, 5, 6, 7), (0, 1, 2, 3, 4, 5, 6, 7), (1, 2, 3, 4, 5, 6, 7), (2, 3, 4, 5, 6, 7), (3, 4, 5, 6, 7), (4, 5, 6, 7), (5, 6, 7), (6, 7), (7,)]␤[(7…»
skids m: my $len = 8; my @ax1 = |(([\,] 0..^$len).cache), |((0..^$len).tail($len - $_).cache for 0..^$len); my @ax2 = @ax1.reverse; say (@ax1 »,« @ax2).perl.say 19:25
camelia rakudo-moar e93a06: OUTPUT«[((0, 7),), ((0, 6), (1, 7)), ((0, 5), (1, 6), (2, 7)), ((0, 4), (1, 5), (2, 6), (3, 7)), ((0, 3), (1, 4), (2, 5), (3, 6), (4, 7)), ((0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7)), ((0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)), ((0, 0), (1, 1),…»
skids Silly me no need for Z.
sortiz \o #perl6 19:26
yoleaux 03:23Z <llfourn> sortiz: ++ that is an interesting solution to the immediate problem. It should work. I think that IO::Socket::SSL inserting itself into SETTING::IO::Socket might be dangerous for setting versioning reasons. I think that not being able to introspect a CompUnit to see what's in it is another problem.
19:31 sjn joined 19:33 perlpilot joined
sortiz ping llfourn 19:35
rudi_s ugexe: Hm. still confused. Because try { $p.out.close; CATCH { ... } } works, but just try { $p.out.close } doesn't. 19:36
RabidGravy: RT?
RabidGravy rt.perl.org/ 19:37
sortiz RabidGravy, What do you think about my idea of include CORE:: in the search done in INDIRECT_NAME_LOOKUP? 19:38
rudi_s RabidGravy: So just to be sure. It's unexpected that try { $p.out.close } doesn't work? I'm still a Perl6 newbie, so I'm not sure. 19:39
If it's unexpected, I should just send a mail to the address mentioned on rakudo.org to report the bug?
RabidGravy yeah, I thought the bug had been reported already (it came up a month ago) but I just searched and apparently not 19:40
19:42 cdg left
RabidGravy sortiz, would that impact "local shadowing" ? e.g class Foo { class Promise { } } ? 19:42
sortiz No, as far as Foo don't exists. 19:43
The problem with IO::Socket::SSL is that IO::Socket already exist in CORE:: 19:44
Juerd It's interesting that in a forum like /r/dailyprogrammer, things get downvoted. 19:48
rudi_s RabidGravy: [x]
19:51 patrickz joined 19:53 FROGGS joined, kent\n left
FROGGS o/ 19:54
yoleaux 01:48Z <timotimo> FROGGS: i set the cronjob to rsync over the html files of cpandatesters to only run every 15 minutes rather than every 5
FROGGS timotimo++
19:57 zakharyas left 19:58 zpmorgan left 20:07 cognominal_ joined, prammer left, perlpilot_ joined 20:10 El_Che_ joined, FROGGS_ joined 20:11 petercom1and joined, cfedde_ joined
sortiz .tell llfourn That the loader doesn't create unneeded package stubs looks good to me, so appending to those provided by settings can't be a problem, unless we want "reserved" namespaces. 20:11
yoleaux sortiz: I'll pass your message to llfourn.
20:12 perlpilot left, xnrand left, petercommand left, El_Che left, cognominal left, cfedde left, salva left, FROGGS left, nine left, camelia left, shmibs left, nine joined, xinming left, pederindi left, adrusi left, xnrand joined, adrusi_ joined 20:13 rindolf left, shmibs joined, xinming joined, pederindi joined, camelia joined 20:14 darutoko left 20:15 salva joined, ChanServ sets mode: +v camelia 20:17 fireartist joined 20:18 spider-mario joined
fireartist fantastic error message :-) I mis-typed "XXX::RPC" as "XXX:RPC", and got: Invalid type smiley 'RPC' used in type name 20:19
TimToady phantasmagoric, maybe 20:20
20:21 prammer joined, yqt joined
nine Public service announcement: we're gonna ban "\n" from distribution's and module's "ver", "auth" and "api" fields. Voice any objections now! 20:21
20:22 [Tux] joined
nine And we're doing this because: why the hell are you even asking?? 20:22
20:24 musiKk joined 20:25 [Tux] left
perlpilot_ nine: wait! ... 20:25
nine: no, never mind ;)
20:25 perlpilot_ is now known as perlpilot
AlexDaniel skids: cool! 20:26
skids: except that diagonal is listed twice
sortiz nine, module's "ver", "api", and overall "auth" seems a good idea, may be nightmarish one to implement well but banning? 20:27
AlexDaniel skids: I mean the biggest one: ((0 0) (1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7)) (twice!)
skids: another question is how to get the same thing but in another direction 20:30
20:31 Amendil left
nine sortiz: those fields should be processable even by non-Perl6 code. And they need to be serialized on disk in a format thats fast to parse. One field per line seems like the perfect candidate 20:34
20:35 maybekoo5 left 20:37 dfcarpenterak left
sortiz nine. Ah, Ok, I misunderstand what you write, forget my objection. 20:38
20:41 Ven joined 20:42 Relsak joined, sjn_ joined
Hotkeys Morning perl 6 20:43
Well technically afternoon but I got up like an hour and a half ago
So I'll count it
sjn_ good * 20:44
20:44 dfcarpenterak joined, sjn left 20:45 sufrostico left
Hotkeys What do I need to do to get my module to 100% Koalatee 20:46
I can't find any requirements listed anywhere
20:47 sufrostico joined 20:48 Ven left
Hotkeys I'm only at 60% 20:48
(Lingua::EN::Stem::Porter) 20:49
Skarsnik having test and Readme
20:51 kent\n joined
hoelzro oh, awesome, a porter stemmer! 20:51
arnsholt I know, right? 20:52
jdv79 Hotkeys: the short list is right in the code 20:53
github.com/perl6/modules.perl6.org...pm#L21-L44 20:54
20:56 sjn_ is now known as sjn
jnthn wonders if there's a stout stemmer and an ipa stemmer too... 20:56
hoelzro jnthn: I made that joke at work once, went right over everyone's heads =P 20:58
sjn would guess at a Bitter stemmer
our perhaps a sour one
20:58 FROGGS_ left
jnthn eww, sour :P 20:59
21:00 _mg_ left 21:01 Ven joined
Hotkeys jdv79: I think I have all of those things 21:02
github.com/johnspurr/Lingua-EN-Stem-Porter
21:02 firstdayonthejob left 21:04 Relsak left 21:05 Relsak joined 21:06 Ven left 21:07 captain-adequate left, captain-adequate joined 21:08 Ven joined, firstdayonthejob joined
skids Hotkeys: I noticed one of my modules have the reqs but a lower Koalatee score as well. 21:08
Hotkeys Hmm
I know that it doesn't /really/ matter
but part of me really wants 100%
:p
should I start including a perl6 shebang at the top of my stuff 21:12
I see other people doing it
I don't really need it on windows but if it would be better for linux users I could
in the tests anyway 21:13
21:13 ELBeavers is now known as ELBeavers_away
rudi_s Is "return;" the equivalent of "return undef" (or just return) in Perl5? I want to indicate failure by returning "nothing" and a string otherwise. 21:14
21:14 Ven left
[Coke] bare return is equiv to "return Nil", so yah. 21:15
m: sub a { return } ; say a.perl; 21:16
camelia rakudo-moar e93a06: OUTPUT«Nil␤»
[Coke] m: sub a { Nil } ; say a.perl; #or rely on last statement
camelia rakudo-moar e93a06: OUTPUT«Nil␤»
hoelzro hmm, that's interesting; I didn't realize it returned Nil 21:17
m: my $value is default(5); $value = 7; sub nothing { return; }; $value = nothing(); say $value
camelia rakudo-moar e93a06: OUTPUT«5␤»
hoelzro that's a little weird to me 21:19
21:19 kaare_ left
jnthn 5 is a little bit of a weird default value :-) 21:21
21:21 musiKk left
hoelzro I should've used 42 like the spec =P 21:21
jnthn But yeah, Nil assignment resets a Scalar to its original :)
uh
To it's default
21:22 cdg joined
hoelzro yeah, that makes sense with what I know about Nil 21:22
I guess it's not really that weird
Hotkeys if I'm testing my algo against a wordlist in my test 21:28
should I produce 1 OK per match
or 1 OK for the list
in its entirety
rudi_s [Coke]: Thanks. 21:29
21:30 sufrostico left 21:32 sufrostico joined 21:36 Ven joined 21:37 [Coke] left 21:38 Coke__ joined, Coke__ is now known as [Coke]
Juerd In a regex, is there something like any(map some-token, 1, 2, 3), as in: an easier way to write [ <foo(0)> | <foo(6)> | <foo(7)> | <foo(8)> ], by having a list of 0, 6, 7, 8? 21:38
rudi_s Lets say I have a variable which is either Nil or has a value. How can I run a function on it if its non Nil? Something like $x .= func with $x works, but I'd like to have it shorted if possible.
(Basically I want fmap on Maybe from Haskell.)
jdv79 i had some funky/sour porters last weekend. they were interesting. 21:40
Juerd If the specific method doesn't exist for Nil, you could do $x.?meth(), but you can't combine that with .= 21:41
dalek osystem: e0f3597 | RabidGravy++ | META.list:
Add Audio::Playlist::JSPF

See github.com/jonathanstowe/Audio-Playlist-JSPF
21:44 arnsholt left
ugexe rudi_s: my $chars = $str_or_nil.?chars; 21:45
rudi_s Juerd: ugexe: Thanks. So there's no way to combinate that and mutate $x itself? 21:47
ugexe oh didnt see Juerd covered that 21:48
Hotkeys So I have a wordlist ~30000 long
and I feel like testing against all of them with an OK each would be very spammy
but it also feels like the right thing to do
skids Certainly failing on the entire chunk would leave no indocation of which test case failed. 21:49
Hotkeys since it seems every OK produces a message i.imgur.com/Oe1Qc1d.png
or does it not always produce a message
skids There is a Test:: function to print warnings though.
"diag" 21:50
RabidGravy yeah, I would do a subtest, keep all 30000 okays but wrap them as one top level test 21:51
21:51 avenj left
skids You could do one test for the whole chunk, and a diag for the first few failed sections of the test. 21:51
RabidGravy though most users will run it in a harness anyway so will only see the number of tests and the result, not each line
Hotkeys ah
yeah it seems prove summarizes things
jnthn I'd just do them all top level and then I can be like "and yeah, my module has THIRTY THOUSAND tests, how about yours?" :) 21:52
Hotkeys lol jnthn
skids Subtests take up just as much screen if you are not using prove.
RabidGravy actually yeah so would I ;-)
jnthn But yeah, they're usually run under a harness :)
21:52 geraud joined
Hotkeys so I don't need to worry about filling someones terminal with 30000 lines of "ok n - blah" 21:53
?
skids Well, personally I rarely use prove but everyone else seems to.
RabidGravy nah, they only see that if they're actually interested
Juerd Alternatively, is there a way after <foo>**{0,6,7,8}, to know how many times the preceding thing matched?
Hotkeys I actually asked that yesterday I think
Juerd I tried { +$<foo> } but that appears to include more than just the preceding part 21:54
Hotkeys if you capture the group you can just convert it to num
oh
wait it's a named capture doi
er
not a named capture, a named regex
Juerd A token, actually
RabidGravy is the XML module the state of the art in XML parsing at the current time or am I missing something super-spiffy 21:55
Hotkeys Juerd: irclog.perlgeek.de/perl6/2016-02-17#i_12060661
this conversation might help
RabidGravy it seems churlish to do JSPF and XSPF too
and not 21:56
Hotkeys okay
so now I can say
my module has 30000 tests come at me
Juerd Hotkeys: Thanks; I tried to just numify the $<foo> but that gives values that weren't in my list
Hotkeys well 21:57
Juerd Like 16, which is none of 0, 6, 7, 8.
Hotkeys 30428 to be precise
Juerd: ah strange
RabidGravy Hotkeys, well there will be no wiggle room for anyone gain-saying what you implemented at least ;-) 21:58
Hotkeys :p 21:59
I expect for this test to fail 41 times out of 30428 I think
lets see how it goes
Skarsnik RabidGravy, I tried saving a big tree I get from a web page and loading it with XML it did not work
perlpilot Juerd: does your list have 16 items?
Juerd perlpilot: No 22:00
I'm trying to simplify the Perl 6 example at www.reddit.com/r/dailyprogrammer/c...ing_legal/
<after $player <cellws>**{0,6,7,8} [<opponent> <cellws>**{+$<cellws>}]+ '-'>
^ I thought I could shorten the 4 <after> lines to just that single line 22:01
But that doesn't work.
Hotkeys or I can forget a semicolon in the test and fail all 30428
that works too
22:01 prammer left
jnthn Juerd: Dunno if using a code assertion afterwards wouold cut it 22:01
perlpilot wasn't aware that **{LIST} worked
skids m: "ffffffffffff fffffff" ~~ m/$<foo>=[f]**{0,6,7,8}/.say
camelia rakudo-moar e93a06: OUTPUT«「ffff」␤ foo => 「ffff」␤»
jnthn perlpilot: Me either... :) I'm wondering what it actually does :)
skids 4, for four elements?
jnthn I think it's numifying the list :)
Juerd Oh damn :) 22:02
perlpilot yep, that's what I think too
jnthn m: say "fffff" ~~ /(f)* <?{ $0 == any(3,5) }>/
camelia rakudo-moar e93a06: OUTPUT«「fffff」␤ 0 => 「f」␤ 0 => 「f」␤ 0 => 「f」␤ 0 => 「f」␤ 0 => 「f」␤»
jnthn m: say "ffff" ~~ /(f)* <?{ $0 == any(3,5) }>/
camelia rakudo-moar e93a06: OUTPUT«「fff」␤ 0 => 「f」␤ 0 => 「f」␤ 0 => 「f」␤»
22:02 khw left
jnthn Maybe something like that 22:02
Juerd It needs to try specific numbers 22:03
jnthn Needs to *try*?
Not just match?
Juerd It needs to match any of the specific numbers of repetitions :)
22:04 Ven left
Juerd But if it's not 0, 6, 7, or 8 times, that doesn't mean the entire match should fail 22:04
22:04 Ven joined
jnthn I thought that's what mine did? :) 22:04
Juerd With backtracking, perhaps :)
jnthn Yes :)
Juerd I don't want that in my grammar :)
jnthn OK
perlpilot you could probably make a parameterized regex and have is-valid call it too 22:05
22:05 skids left
Juerd "This type does not support positional operations" 22:05
Oh, that type.
jnthn Not sure how far knowing would help...those tend to come from the bowels. :) 22:06
Juerd I just added newlines to get a more specific location :)
Hotkeys do hashes have a maximum size?
> elems [@wordlist-input Z=> @wordlist-expected];
30428
> elems hash [@wordlist-input Z=> @wordlist-expected];
18981
Juerd Hotkeys: Yes, eventually you will run out of memory. 22:07
jnthn Hotkeys: Is @wordlist-input unique?
22:08 Skarsnik left
Hotkeys oh here's a fun story 22:09
jnthn If not, then you'll lose things 'cus the same key will replace an earlier entry
Hotkeys I mixed up my output and input files
22:09 Ven left
Hotkeys when i renamed them 22:09
:)
jnthn ah :)
Hotkeys that would also explain why I failed all of my tests
22:10 cpage_ left
rudi_s Can I change the object type in BUILD? I want to replace it with a proper subclass after running a few methods (so I can't do this in new where I can't call the methods yet) which help me detecting which subclass I need. 22:10
Hotkeys alright all is good
hoelzro rudi_s: I don't believe so; could you run the methods on the type object? that way you could use new()
as a side note, having Type.new return something that isn't a Type is probably not a great idea =/ 22:11
rudi_s hoelzro: No, the method needs instance variables. - Can I call bless and then immediately use that object?
Hotkeys performance wise, is it okay to have a 'my' declarator in a 30000-time looping for loop, or should I stick the declaration outside
perlpilot might be less of a surprise if it's called TypeFactory
:)
hoelzro perlpilot: I think that's fair 22:12
rudi_s Yeah, but it would be really useful in my case.
hoelzro rudi_s: yes
Hotkeys oh no Factories, java is invading
Juerd Hm, does <after> not capture/ 22:14
s/'/'/?/
Hotkeys woo i.imgur.com/DaXZIvY.png
22:14 wwwbukolaycom joined
Hotkeys I remembered the number I'd fail 22:14
rudi_s Hm. require Foo::Bar::($var); works, but Foo::Bar::($var).bless(...) doesn't. How can I call bless dynamically? 22:15
jnthn How does it fail to work? I'd expect that to... 22:17
m: class A::B { }; my $var = 'B'; A::($var).bless.WHAT.say
camelia rakudo-moar e93a06: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QbPB4s2I_Z␤Combination of indirect name lookup and call not supported␤at /tmp/QbPB4s2I_Z:1␤------> 3class A::B { }; my $var = 'B'; A::($var)7⏏5.bless.WHAT.say␤ expecting any of:␤ argum…»
jnthn m: class A::B { }; my $var = 'B'; A::{$var}.bless.WHAT.say 22:18
camelia rakudo-moar e93a06: OUTPUT«(B)␤»
jnthn Ah, yeah
Like that :)
A:: just gets you the Stash of A, and then it's just a hash indexing into it
jnthn is still a tad curious about the other form... 22:19
rudi_s jnthn: Awesome, thank you. - It was recommended by Perl6 to me when I tried to use require Foo::Bar::$var; 22:20
jnthn Hmm
I think we might be better suggesting the hash indexer form
rudi_s Both were suggested, I just chose the first one. 22:21
"please use ::('$var'), ::{'$var'} or ::<$var>" 22:22
perlpilot would have tried the first or last way and not thought of the middle way.
22:23 _dolmen_ joined, fireartist left
rudi_s {$var} in the require gives me the warning "block object coerced to string (please use .gist or .perl to do that). 22:25
jnthn: ^
So I chose ($var).
jnthn Ah, interesting.
22:27 TreyHarris left, TreyHarris joined 22:33 ely-se left 22:36 sno joined 22:42 cpage_ joined 22:43 ocbtec left 22:46 Zero_Dogg left
Hotkeys Anyone who was excited about my porter module existing: I'm going to try snowball after I optimize this, but are there any other things I should look into to help flesh out Lingua::*? 22:49
22:51 Zero_Dogg joined, Zero_Dogg left, Zero_Dogg joined
hoelzro is Lingua:: for any sort of NLP? 22:59
23:00 _dolmen_ left 23:07 spider-mario left, sufrostico left
Hotkeys hoelzro: I'm assuming it is 23:08
not sure though
hoelzro hmm...all of the NLP stuff I've done lately requires fast matrix stuff
so we would need a numeric analysis library first for things like Lesk, LSA, LDA 23:09
and it just so happens I have the *perfect* name for a numerical analysis module for Perl 6
Hotkeys not sure if I'd be up to doing a good numeric analysis library 23:11
I'll leave that to you :p
hoelzro well, in case someone else wants to do it the name is "PerfectNumber" 23:13
because 6 is the first perfect number ;)
dalek kudo-star-daily: d0d7a7e | coke++ | log/ (8 files):
today (automated commit)
23:14
23:14 cpage_ left
jnthn sleep & 23:15
Hotkeys hoelzro: lol 23:16
23:21 perlawhirl joined, khw joined
perlawhirl hi perlers 23:21
FOSDEM VIDEOS ARE UP!!
AlexDaniel perlawhirl: how many of them? 23:25
perlawhirl looks to be pretty much all of them. i had a cron running every 5 mins to check for changes... logged in this morning to 81 emails :D 23:27
23:27 RabidGravy left
perlawhirl so... possibly some are still uploading ?? 23:27
23:29 TEttinger joined 23:30 cpage_ joined
perlawhirl just ran my script again. looks like it's still "updating" (i can't tell you what's updating, my script just compares md5sum of the html ) 23:31
23:34 cpage_ left
perlawhirl also... when i said 'pretty much all of them' i meant... the perl ones... they're the only ones that matter, right :D 23:34
23:35 skids joined 23:36 cpage_ joined 23:37 SCHAAP137 left
sortiz . 23:39
23:40 dfcarpenterak left 23:48 adu joined 23:51 avenj joined 23:56 dfcarpenterak joined
Hotkeys So I added some optimizations to this porter alogrithm 23:56
annnnd it's a second and a half slower on the wordlist test
23:59 brrt joined