»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
00:04 kurahaupo_ left, kurahaupo joined 00:05 p6bannerbot sets mode: +v kurahaupo 00:19 w_richard_w joined 00:20 p6bannerbot sets mode: +v w_richard_w 00:34 rfold left 00:47 st_elmo joined, p6bannerbot sets mode: +v st_elmo 00:49 kurahaupo_ joined, p6bannerbot sets mode: +v kurahaupo_ 00:51 kurahaupo_ left, kurahaupo_ joined 00:52 kurahaupo left, p6bannerbot sets mode: +v kurahaupo_ 00:57 Garland_g[m] is now known as Garlandg[m], Garlandg[m] is now known as Garland_g[m] 00:59 graphene left 01:01 graphene joined, p6bannerbot sets mode: +v graphene 01:06 epony joined, p6bannerbot sets mode: +v epony 01:09 kurahaupo joined 01:10 p6bannerbot sets mode: +v kurahaupo 01:11 kurahaupo_ left
holyghost I cannot get Game-Markov fully debugged right now, pm told me to wait with its release 01:11
ecocode: Game::Markov
01:11 kurahaupo left
holyghost ecocode: Game::Markov 01:11
ecocode: Game::Markov 01:12
01:12 kurahaupo joined 01:13 p6bannerbot sets mode: +v kurahaupo
holyghost ecocode: Game::Markov 01:14
01:15 holyghost left, holyghost joined 01:16 p6bannerbot sets mode: +v holyghost
holyghost eco\: Game::Markov 01:16
01:17 w_richard_w left, reach_satori left
holyghost "eco: Game::Markov" 01:18
\eco: Game::Markov
never mind 01:19
holyghost needs sto setup his irc client which autocompletes default 01:21
01:28 wamba joined
holyghost which is the bot name of the ecosystem ? 01:28
01:28 p6bannerbot sets mode: +v wamba
holyghost hail to wamba ! 01:29
praise to Kumash-Gor ! 01:31
01:34 lucasb left 01:35 reach_satori joined 01:36 p6bannerbot sets mode: +v reach_satori
zengargoyle is anybody doing Advent of Code in p6? 01:40
what's the best substitue for an in place @x.rotate($n) that is in-place and not a copy? 01:43
Xliff timotimo: You around? ;) 01:46
Have Cairo questions for ya.
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0,1]>>.Str).perl; 01:49
evalable6 (" A ", " B ")
zengargoyle also still wondering about this. what's with the spaces? shouldn't it be ("A","B")?
01:55 Prem joined, p6bannerbot sets mode: +v Prem 01:59 coet left
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/.gist 02:04
camelia (「 A 」
0 => 「A」 「 B 」
0 => 「B」)
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0].gist
camelia 「 A 」
0 => 「A」
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0].map( *[0] ).gist.say 02:05
camelia (Nil)
True
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/.map( *[0] ).gist.say
camelia (「A」 「B」)
True
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/.map( *[0] )>>.Str
camelia (A B)
Xliff ^^ There you go.
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0]>>.Str).perl; 02:06
evalable6 ("A",)
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[1]>>.Str).perl;
evalable6 ("B",)
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0,1]>>.Str).perl;
evalable6 (" A ", " B ")
Xliff Right, but you have to remember that with :g, the entire string is matched.
Rather, the entire OBJECT is matched.
And you have \s(<[A..Z]>)\s 02:07
zengargoyle even with the [] surrounding for not.
Xliff Which means those are caught.
You need to treat $/ as an array
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[*]>>.Str).perl;
evalable6 (" A ", " B ")
Xliff Hence the use of .map( *[0] )
"Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[*][0]>>.Str).perl; 02:08
evalable6 ("A",)
Xliff "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[*][0]>>.Str).perl;
m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[*][0]>>.Str).perl;
camelia 5===SORRY!5=== Error while compiling <tmp>
Unexpected closing bracket
at <tmp>:1
------> 3[\s(<[A..Z]>)\s]/,:g);say $/[*][0]>>.Str7⏏5).perl;
zengargoyle sorta makes sense.
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[*][0]>>.Str.perl;
camelia ("A",)
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/.map( *.[0] )>>.Str.perl;
camelia ("A", "B")
zengargoyle not my DWIM. :)
Xliff It is, but you have to think about what :g does. 02:09
I see your point, though.
zengargoyle gotcha.
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/.map( *[0] )>>.Str.perl;
camelia ("A", "B")
zengargoyle i made it work... it just confused me for a minute...
Xliff Don't need .
m:g/[\s(<[A..Z]>)\s]/ will run \s(<[A..Z]>)\s across the whole string. 02:10
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/XMSZUu0VzA
Confused
at /tmp/XMSZUu0VzA:1
------> 03g/[\s(<[A..Z]>)\08⏏04s]/ will run \s(<[A..Z]>)\s across the w
Xliff .. m:g/[\s(<[A..Z]>)\s]/ will run \s(<[A..Z]>)\s across the whole string.
So for multiple matches, you have an array of several matches. Each one with a $0 02:11
If you want to nix the spaces, maybe this will work. 02:12
zengargoyle thanks, missed the :g influence.
Xliff m: "Hey A is B duh".match(/«<[A..Z]>»]/,:g);say $/.gist 02:13
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse regex; couldn't find final '/'
at <tmp>:1
------> 3"Hey A is B duh".match(/«<[A..Z]>»7⏏5]/,:g);say $/.gist
expecting any of:
argument list
infix sto…
Xliff m: "Hey A is B duh".match(/«<[A..Z]>»/,:g);say $/.gist
camelia (「A」 「B」)
Xliff m: "Hey A is B duh".match(/«<[A..Z]>»/,:g);say $/>>.Str.gist
camelia (A B)
zengargoyle i did .[0], .[1] instead... it worked out. just thought the .[] would be same as [0,1] -ish
Xliff Yeah. Problem is... different Match object. 02:14
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[1]>>.Str).perl;
evalable6 ("B",)
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0]>>.Str).perl;
evalable6 ("A",)
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[]>>.Str).perl;
evalable6 (" A ", " B ")
Xliff Right, because you are accessing the first and the second match object.
zengargoyle ah
Xliff What you are trying to access is the first pattern of each match object. 02:15
zengargoyle the :g, makes it one level deeper.
Xliff "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0][0]>>.Str).perl; 02:16
evalable6 ()
Xliff "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0][0]>>.Str).perl;
"Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0][0]>>.Str.perl;
evalable6 ()
Xliff Well, feck! %-)
M: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0][0]>>.Str.perl;
m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0][0]>>.Str.perl;
camelia ()
Xliff M: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0]>>.Str.perl;
m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0]>>.Str.perl; 02:17
camelia ("A",)
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[1]>>.Str.perl;
camelia ("B",)
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[1][0].perl;
camelia Match.new(list => (), orig => "Hey A is B duh", made => Any, hash => Map.new(()), pos => 10, from => 9)
Xliff m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[1].perl;
camelia Match.new(list => (Match.new(made => Any, orig => "Hey A is B duh", list => (), hash => Map.new(()), pos => 10, from => 9),), orig => "Hey A is B duh", made => Any, from => 8, pos => 11, hash => Map.new(()))
zengargoyle that's about where i gave up and just did the thing that worked. :P
Xliff LOL. 02:18
m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[1][0].Str;
camelia B
zengargoyle ask / figure it out later.
Xliff Finally!
m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say $/[0][0].Str;
camelia A
Xliff See the logic, now? 02:19
zengargoyle i got you at g:
:g
Xliff O I C
Now I go back to drinking....
zengargoyle thanks, wanted 2nd opinion befor going totally graaar.
my p6 thinking is a couple of years out of date and very rusty. 02:20
github.com/zengargoyle/AOC2018 -- if anybody else is doing AoC and wants to point me to solutions or school me on my terrible code. 02:24
02:24 epony left 02:25 molaf left
zengargoyle i'd like to see other better p6 solutions. 02:25
Kaiepi can someone show me a practical example of how parameterized roles are used? 02:27
holyghost Xliff : lol, I did the same after debugging Game-MArkov somewhat 02:32
02:37 zacts joined, p6bannerbot sets mode: +v zacts 02:38 molaf joined, p6bannerbot sets mode: +v molaf 02:44 epony joined, p6bannerbot sets mode: +v epony
moony wanted to do a cool golf buttt 02:58
p6: 'e'x Inf;
camelia WARNINGS for <tmp>:
Useless use of "x" in expression "'e'x Inf" in sink context (line 1)
Cat object not yet implemented. Sorry.
in block <unit> at <tmp> line 1
Xliff Was there ever a reason Perl6 doesn't have a Cool.radians function? 03:12
m: say 90.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean 'rand'?
in block <unit> at <tmp> line 1
Xliff m: say 90.radians
camelia No such method 'radians' for invocant of type 'Int'
in block <unit> at <tmp> line 1
Xliff m: use MONKEY-SEE-NO-AUGMENT; augment Cool { method rad { self * pi / 180 }; }; say 90.rad 03:13
camelia ===SORRY!===
Could not find MONKEY-SEE-NO-AUGMENT at line 1 in:
/home/camelia/.perl6
/home/camelia/rakudo-m-inst-2/share/perl6/site
/home/camelia/rakudo-m-inst-2/share/perl6/vendor
/home/camelia/rakudo-m-inst-2/share/perl6
Xliff m: use MONKEY-TYPING; augment Cool { method rad { self * pi / 180 }; }; say 90.rad
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed augment
at <tmp>:1
------> 3use MONKEY-TYPING; augment Cool7⏏5 { method rad { self * pi / 180 }; }; sa
03:14
Xliff m: use MONKEY-TYPING; augment class Num { method rad { self * pi / 180 }; }; say 90.Num.rad
camelia 1.5707963267948966
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say 90.rad 03:15
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Xliff m: use MONKEY-TYPING; say 90.rad 03:16
camelia No such method 'rad' for invocant of type 'Int'. Did you mean 'rand'?
in block <unit> at <tmp> line 1
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say 90.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Xliff ?!?
m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say 90 ~~ Cool
camelia True
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self.Num * pi / 180 }; }; say 90.rad 03:17
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say 90.Int.rad 03:18
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
03:18 Alef_Burzmali23 joined
Xliff m: 90.^mro.say 03:18
camelia ((Int) (Cool) (Any) (Mu))
03:18 Alef_Burzmali23 left
Xliff OK. Buggered. 03:23
03:25 ufobat___ joined, ufobat_ left 03:26 p6bannerbot sets mode: +v ufobat___
zengargoyle how do you know the # is in degree before makeing it into .rad? 03:33
holyghost Xliff : if you have the time would you like to take a look at github.com/theholyghost2/Game-Markov 03:38
or anyone else who likes to make a pull request 03:43
SmokeMachine m: "Hey A is B duh".match(/[\s<(<[A..Z]>)>\s]/,:g); say $/[0].gist 03:44
camelia 「A」
SmokeMachine 01:44 <SmokeMachine> m: "Hey A is B duh".match(/[\s<(<[A..Z]>)>\s]/,:g); say $/
m: "Hey A is B duh".match(/[\s<(<[A..Z]>)>\s]/,:g); say $/
camelia (「A」 「B」)
SmokeMachine m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; Cool.^compose; Int.^compose; say 90.rad 03:47
camelia 1.5707963267948966
SmokeMachine Xliff: ^^
m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; Int.^compose; say 90.rad 03:49
camelia 1.5707963267948966
buggable New CPAN upload: Game-Markov-0.1.10.tar.gz by HOLYGHOST modules.perl6.org/dist/Game::Markov...:HOLYGHOST 03:53
Xliff SmokeMachine: oho! Why the need to compose Cool and not Num? 04:13
04:13 molaf left
Xliff m: use MONKEY-TYPING; augment class Num { method rad { self * pi / 180 }; }; say 90.Num.rad 04:14
camelia 1.5707963267948966
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say 90.Int.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; Cool.^compose; say 90.Int.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; Cool.^compose; say 90.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
04:15
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; Int.^compose; say 90.rad
camelia 1.5707963267948966
Kaiepi m: sub a($a, $b) { $a + $b ); say [1,2] >>a>> [3,4]
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3sub a($a, $b) { $a + $b 7⏏5); say [1,2] >>a>> [3,4]
expecting any of:
statement end
statement modifier
statement modifier …
Kaiepi m: sub a($a, $b) { $a + $b }; say [1,2] >>a>> [3,4]
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing infix inside HYPER
at <tmp>:1
------> 3sub a($a, $b) { $a + $b }; say [1,2] >>7⏏5a>> [3,4]
expecting any of:
infix
infix stopper
Kaiepi m: sub a($a, $b) { $a + $b }; say [1,2] >>&a>> [3,4]
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing << or >>
at <tmp>:1
------> 3sub a($a, $b) { $a + $b }; say [1,2] >>&7⏏5a>> [3,4]
expecting any of:
infix
infix stopper
Kaiepi m: sub a($a, $b) { $a + $b }; say [1,2] >>[a]<< [3,4] 04:16
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing infix inside []
at <tmp>:1
------> 3sub a($a, $b) { $a + $b }; say [1,2] >>[7⏏5a]<< [3,4]
expecting any of:
bracketed infix
infix
infix stopper
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say 90.Int.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Kaiepi m: sub infix:sym<a>($a, $b) { $a + $b }; say [1,2] >>a<< [3,4]
camelia Type check failed in binding to parameter 'op'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
Kaiepi m: sub infix:sym<a>(Mu $a, Mu $b) { $a + $b }; say [1,2] >>a<< [3,4]
camelia Type check failed in binding to parameter 'op'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
Xliff m: use MONKEY-TYPING; augment class Cool { method rad { self * pi / 180 }; }; say (90.1).Int.rad
camelia No such method 'rad' for invocant of type 'Int'. Did you mean any of these?
rad
rand

in block <unit> at <tmp> line 1
Kaiepi m: sub infix:sym<a>(Mu $a, Mu $b) { $a + $b }; say [1,2] >>&a<< [3,4]
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing << or >>
at <tmp>:1
------> 3Mu $a, Mu $b) { $a + $b }; say [1,2] >>&7⏏5a<< [3,4]
expecting any of:
infix
infix stopper
04:17 Cabanoss- joined
Xliff m: sub infix:sym<a>(Mu $a, Mu $b) { $a + $b }; say [1,2] >>a<< [3,4] 04:17
04:18 p6bannerbot sets mode: +v Cabanoss-
Xliff Whoops 04:18
m: say 1+!
camelia 5===SORRY!5=== Error while compiling <tmp>
Prefix ! requires an argument, but no valid term found
at <tmp>:1
------> 3say 1+!7⏏5<EOL>
expecting any of:
prefix
Xliff m: sub infix:sym<a>(Mu $a, Mu $b) { $a + $b }; say [1,2] >>a<< [3,4]
camelia Type check failed in binding to parameter 'op'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
Xliff m: sub infix:<a>(Mu $a, Mu $b) { $a + $b }; say [1,2] >>a<< [3,4]
camelia [4 6]
04:19 Cabanossi left
Kaiepi ah there we go 04:19
Xliff Kaiepi: yw :) 04:20
Kaiepi m: sub prefix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; ['ASSÉÉÉ"]>>toid
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in single quotes; couldn't find final "'" (corresponding starter was at line 1)
at <tmp>:1
------> 3..z 0..9]>/, '', :g) }; ['ASSÉÉÉ"]>>toid7⏏5<EOL>
expecti…
Kaiepi m: sub prefix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; ['ASSÉÉÉ']>>toid
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing dot on method call
at <tmp>:1
------> 3<-[a..z 0..9]>/, '', :g) }; ['ASSÉÉÉ']>>7⏏5toid
expecting any of:
postfix
Kaiepi m: sub prefix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; ['ASSÉÉÉ']>>&toid
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed postfix
at <tmp>:1
------> 3<-[a..z 0..9]>/, '', :g) }; ['ASSÉÉÉ']>>7⏏5&toid
expecting any of:
postfix
Xliff m: sub postfix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; ['ASSÉÉÉ']>>toid 04:21
camelia ( no output )
Xliff m: sub postfix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; say ['ASSÉÉÉ']>>toid
Kaiepi m: sub prefix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; say ['ASSÉÉÉ']<<toid
camelia [ass]
5===SORRY!5=== Error while compiling <tmp>
Unable to parse quote-words subscript; couldn't find '>>' (corresponding '<<' was at line 1)
at <tmp>:1
------> 030..9]>/, '', :g) }; say ['ASSÉÉÉ']<<toid7⏏5<EOL>
expecting any of:
Kaiepi m: sub prefix:<toid>(Str $data) { $data.lc.subst(/<-[a..z 0..9]>/, '', :g) }; say ['ASSÉÉÉ']<<toid
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse quote-words subscript; couldn't find '>>' (corresponding '<<' was at line 1)
at <tmp>:1
------> 030..9]>/, '', :g) }; say ['ASSÉÉÉ']<<toid7⏏5<EOL>
expecting any of:
Kaiepi oh ok
thanks Xliff 04:22
Xliff :)
04:37 NelsonHB joined 04:38 p6bannerbot sets mode: +v NelsonHB 04:54 wamba left 05:12 graphene left 05:14 graphene joined, p6bannerbot sets mode: +v graphene
Xliff Can we not have function pointers as members of CStruct? If so... how is that done? 05:47
has Pointer $func and cast it later?!? 05:48
05:51 leont left 05:56 curan joined, p6bannerbot sets mode: +v curan 06:04 wamba joined 06:05 andrzejek joined, p6bannerbot sets mode: +v wamba 06:06 p6bannerbot sets mode: +v andrzejek
andrzejek hey, I think about making a small blog about Perl6 and not only but not sure what platform is the best 06:06
a pure html5 or static generator or medium?
holyghost andrzejek : maybe blogs.perl.org 06:07
I belive the package Uzu makes static sites 06:08
I'm not sure
andrzejek it is perl6? 06:09
package
holyghost yes
andrzejek module 06:10
you mean
holyghost yes, on cpan or github
andrzejek ahh
but it have build webserwer
NelsonHB Noi Bai International Airport
Wattay International Airport
Mandalay International Airport
Guwahati International Airport
Netaji Subhas Chandra Bose International Airport
holyghost I think we needs some killbans ... 06:11
andrzejek NelsonHB: go away
holyghost mst ?
andrzejek it would be fine to have markdown to html5 converter 06:12
06:14 kurahaupo left, kurahaupo joined 06:15 p6bannerbot sets mode: +v kurahaupo 06:18 zacts left
andrzejek holyghost: I registered on blogs.perl.org but I somehow not my liking 06:22
holyghost Then you have to make a perl6 CGI script, search google for it 06:27
to match with your webserver you mentioned
mod_perl is perl5 06:28
for apache webserver
06:30 jmerelo joined
holyghost hi jmerelo 06:30
06:30 p6bannerbot sets mode: +v jmerelo
holyghost I've debugged Game-Markov somehwat, needs more work, it's on github.com/theholyghost2 now 06:31
holyghost is afk now 06:32
jmerelo hi 06:33
Check out today's Advent Calendar entry: perl6advent.wordpress.com/2018/12/...work-flow/
06:34 andrzejek left 06:40 graphene left 06:41 NelsonHB left, wamba left 06:42 graphene joined, p6bannerbot sets mode: +v graphene
jmerelo .seen daotoad 06:48
yoleaux I saw daotoad 14 Oct 2018 22:38Z in #perl6: * daotoad smiles and waves
07:08 domidumont joined, p6bannerbot sets mode: +v domidumont
jmerelo Also, we would need some reserve articles for the Perl 6 Advent Calendar. If someone is willing to do that, please tell tbrowder or me. 07:15
07:28 wamba joined 07:29 p6bannerbot sets mode: +v wamba
Xliff jmerelo: How many reserves do you need? 07:33
I just thought of a topic I can write about.
jmerelo Xliff: one is enough, for the time being :-) 07:36
Xliff: if we finally don't need it to cover some missing article, we can publish it as an after-advent feature. 07:37
Xliff OK. How much time do I have to write it?
Subject is "Cleaning up your Inheritance with a Custom Bless Method" 07:38
07:38 robertle joined
jmerelo Xliff: as little or as much as you want... I mean, we don't know when no-shows will happen, so the sooner, the better. 07:38
07:39 p6bannerbot sets mode: +v robertle
Geth doc: a13e8aa88c | (JJ Merelo)++ | 3 files
Rewording of words

With some pointers to the function actually doing the heavy lifting, Str.words. Also some minor editing here and there. Closes #2340
07:39
Xliff jmerelo: OK. I will try to have something written by this week. 07:40
I will start getting it into shape, either tomorrow or the day after.
jmerelo Xliff: thanks! 07:41
Xliff Is this still the best way to have function pointers in CStructs? stackoverflow.com/questions/487722...ll-cstruct 07:42
07:43 CindyLinz joined
jmerelo Xliff: I would say so... 07:43
Xliff :(
That blows chunks for things like Pango and GTK
07:43 p6bannerbot sets mode: +v CindyLinz
Xliff is working on Pango, atm 07:44
07:45 lookatme_q joined 07:46 p6bannerbot sets mode: +v lookatme_q 07:52 pmurias joined, p6bannerbot sets mode: +v pmurias 07:53 alessa joined, p6bannerbot sets mode: +v alessa 07:56 pmurias left 07:58 wamba left 07:59 pmurias joined, p6bannerbot sets mode: +v pmurias, wamba joined 08:00 p6bannerbot sets mode: +v wamba
Geth doc: a6245913e4 | (JJ Merelo)++ | htmlify.p6
Checking type is not accidentally generated.

As a matter of fact, the code mentioned is never called now. So it might be a different error, but closes #1656
08:03
08:03 kensanata joined, p6bannerbot sets mode: +v kensanata 08:05 pmurias left 08:12 coet joined, p6bannerbot sets mode: +v coet
alessa so i've been learning perl 6 using advent of code and i just completed part 1 of day 3. my solution takes several minutes to complete on my laptop... i found a comparable version written in python that completes in seconds. the main difference being i'm using a baghash and they're using a python dictionary. i absolutely adore how perl 6 does things 08:14
, i haven't programmed in years and i haven't enjoyed learning a language this much since i first started learning python as a teen. but is perl 6 this slow in general right now?
holyghost alessa : :-) 08:16
alessa holyghost: lol, should i take that as a yes? 08:18
holyghost alessa : I hope you'll enjoy perl6 as much as I do
alessa holyghost: it is SO COOL
holyghost it's not slow though
jmerelo alessa: it might be slow in some cases, yes. 08:21
08:21 pmurias joined, p6bannerbot sets mode: +v pmurias
masak alessa: occasionally slow 08:21
alessa: getting better with time, but still on the slow side compared to Python, Perl 5, etc 08:22
jmerelo alessa: it will depend on how you process things, and if you leave enough time for the JIT optimizer to kick in. In general, functional stuff can be faster.
masak extremely dirty imperative stuff can also be faster :P 08:23
jmerelo alessa: you are talking about the one-liner calendar by Andrew Shitov, right?
masak :-)
alessa that's what i had read. my first two programs were a lot lighter but this one is basically drawing a thousand rectangles on a virtual grid made of coordinates stored in a baghash which increment at every box on the grid where the rectangles overlap
if that makes sense
masak yes, think so 08:24
alessa so for a thousand+ inputs of x by y sized rectangles you're incrementing x*y baghash entries which may or may not already exist
jmerelo alessa: kinda. You can also try different versions of Perl6. There might be dramatic improvements from one version to the next.
08:24 xlat joined
alessa maybe it's because baghashes don't store things in sequence like a python dictionary? 08:25
masak I think it's simply because you're doing a lot of computation, and it shows because Perl 6 is slow
08:25 p6bannerbot sets mode: +v xlat
jmerelo perl 6 uses a different strategy to compute where stuff is stored. It shouldn't be much slower. 08:25
masak .oO( well, to be perfectly precise, the current *implementation* of Perl 6 is slow ) :)
jmerelo You can also try and use shaped arrays, for instance... 08:26
masak: good precision.
in general, different data structures might have dramatically different speed...
alessa shaped arrays - i googled that, is it an array with the size specified and fixed at declaration, like my @array[7]; ? 08:27
jmerelo alessa: right. You can also use it for two-dimensional arrays, or n-dimensional arrays, so that for the values of the x,y coordinates you can use @array[x;y] 08:28
Baghashes are probably better for generating random elements and things like that. A normal associative array might be another alternative, which is the closest thign to Python's dictionaries. 08:29
08:30 graphene left
alessa is associative array different than a hash? 08:31
jmerelo alessa: not really.
holyghost Baghashes, lol, I code too much C++ and play too much "Quest for Glory 1 and 4", Baba Yaga games
jmerelo alessa: but they can be faster storing and retrieving values.
08:32 graphene joined
jmerelo alessa: it's also a drop-in replacement, you probably don't need to do much besides changing the name of the variable to %array. 08:32
08:32 p6bannerbot sets mode: +v graphene 08:33 zakharyas joined
alessa jmerelo: to the interpreter! brb heh 08:33
08:34 p6bannerbot sets mode: +v zakharyas
alessa egad, i totally could've. let's go see if that's any faster 08:34
jmerelo alessa: good luck :-)
08:37 abraxxa joined
holyghost I'm not going to start a holy war, but a bag of hashes I presume is too much for this old C++ coder :-) 08:38
08:38 p6bannerbot sets mode: +v abraxxa 08:39 rindolf joined 08:40 p6bannerbot sets mode: +v rindolf
alessa i made a version using regular hashes and i'm racing them 08:41
hashes has already handily won but i'll give times when baghash version finishes lol 08:42
08:44 pmurias left
alessa the results are in. %hash version: 0m51s; baghash version: 2m45s. and the python version i didn't write did it in 0m3s. as measured by time command. 08:44
holyghost ouch
alessa hey, less than a minute is livable though 08:45
08:46 dakkar joined
holyghost I don't know for sure, maybe we need a C interface for such things 08:46
08:46 p6bannerbot sets mode: +v dakkar
holyghost you probably can outrun it with a *ptr++ 08:47
seomthing for small hashes I mean, not lists
randomly hashes and whatever :-) 08:48
s/hashes/hashed
Xliff alessa: Where is the code you are working from?
alessa Xliff: should i pastebin it?
Xliff Yes, please
alessa Xliff coming right up :) 08:49
Xliff :)
08:50 epony left 08:51 quester left
alessa here's baghash version: pastebin.com/VE5KiMhE || here's hash version: pastebin.com/DtXZAiJr || here is the input file: pastebin.com/cQ6ZfegD 08:53
the baghash version has my pseudocodish stuff at the top
oops, that's the wrong input file! hold on
pastebin.com/hAUd2vWJ <- that's the correct one, the source is set up to open it as claims.txt 08:54
08:54 pmurias joined, p6bannerbot sets mode: +v pmurias
Xliff alessa: What version of perl6 are you using? 08:58
holyghost hi pmurias
alessa perl6 -v tells me "This is Rakudo Star version 2018.10 built on MoarVM version 2018.10implementing Perl 6.c." 08:59
^ Xliff
Xliff Ah. Thanks
I get an error when I run it: "Cannot resolve caller split(Any:U, Str:D); Routine does not have any candidates. Is only the proto defined?" 09:00
holyghost you probably need dynamic variables instead of typed ones 09:01
Xliff alessa: Are you sure this is the input file: pastebin.com/cQ6ZfegD 09:03
pmurias holyghost: hi
alessa Xliff: it sounds like a problem with the input file. there's probably a trailing newline and my program doesn't do any validating to check for an empty line
Xliff: oh no that one's not it
Xliff :)
alessa Xliff: pastebin.com/hAUd2vWJ <- this one is it. just make sure there's no trailing whitespace, any blank lines will kill the program in a similar fashion lol 09:05
09:06 epony joined, p6bannerbot sets mode: +v epony 09:09 abraxxa left
jmerelo alessa: does it work faster with hashes? 09:09
alessa jmerelo: yeah! with baghashes it takes me 2:45, and with normal %hashes, it takes 0:51 09:10
09:10 abraxxa joined
jmerelo alessa++ 09:10
09:11 p6bannerbot sets mode: +v abraxxa
lookatme_q I test the code, here is about 15s 09:11
alessa lookatme_q: wow, i wonder what the difference is. is your system way faster? i'm running ubuntu on a cheapo walmart laptop 09:12
lookatme_q: Intel® Pentium(R) CPU N3700 @ 1.60GHz × 4 and 4gigs of whatever ram they stuck in this thing, not a fast hard drive at all either 09:13
lookatme_q oh, your laptop performance is much lower than my working PC 09:14
off work now :) maybe I should test on my notebook when I am home
bye
alessa lookatme_q: see ya! 09:15
09:18 lucasb joined, p6bannerbot sets mode: +v lucasb
lucasb alessa, zengargoyle: If you are doing AoC and feels like to joining our leaderboard, the code is 169430-b1c331b2 09:20
Xliff m: Instant.from-posix.say 09:22
camelia Cannot resolve caller from-posix(Instant:U: ); none of these signatures match:
(Instant: $posix, *%_)
(Instant: $posix, Bool $prefer-leap-second, *%_)
in block <unit> at <tmp> line 1
Xliff ???
evalable6 Stub code executed
in block <unit> at /tmp/my1Z5vEPXm line 1
alessa lucasb: i did! hehe i started days behind everyone else 09:23
lucasb alessa: cool, thanks for joining! good luck :) 09:24
I see the board as fun, but I'm not competing... :) 09:25
alessa lucasb: thanks! yeah it's neat but if i'm not either. lol now that i've gotten my execution time down some i feel ok moving on to day 3 part b. i was feeling icky about how long it was gonna take me to check all those claims for overlaps 09:26
lucasb This very intelligent C++ programmer joined the board, so I guess he'll be established there in the lead for the rest of the event
alessa s/but if/but 09:27
09:27 [Sno] left
lucasb I started doing the first days in P6, but have fallback to P5 for lack of experience 09:28
Xliff alessa: I got slightly faster doing: "my $duplicate-claims-list = %bag.values.grep( * ne 1)", but YMMV 09:30
09:31 salva joined
Xliff Weirdly enough, the values are cached, so once computed, it's faster the next time round. 09:31
09:31 p6bannerbot sets mode: +v salva
Xliff And that's the gong. G'night, everyone! 09:32
holyghost Xliff : gn
09:32 reach_satori left
alessa lucasb: i have been having great fun poking through manuals and docs and random googles. the p6 docs just don't feel super user friendly for some reason 09:33
09:33 abraxxa left
alessa lucasb: it took me a couple days of googling around to figure out where to go for what info 09:34
09:40 abraxxa joined 09:41 p6bannerbot sets mode: +v abraxxa
lucasb besides docs.perl6.org, there's information spread in perl6advent.wordpress.com and the synopsis (specs/design docs). I think the docs should be the canonical place for information, so if you didn't found something there, mention it. I don't contribute to the docs, but I'm sure the doc writers will take your comments in consideration to make the docs better :) 09:43
09:44 rindolf left
alessa lucasb: i'll keep it in mind. so far the only thing that's kind of pained me was trying to figure out how to do the equivalent of python's pickle command. i figured out i could splat a perled string to a file and slurp it up but when i tried it my file was 3.7MB and it was actually slower to read it in than it was to compute it on the fly 09:47
it was that baghash
lucasb: i have also gotten a lot of mileage out of the perl 6 doc on learnxinyminutes' site. it's easy to just ctrl+f to the thing i want. i'll have to take a look at the synopsis too but i'm already using the other two you mentioned. now that i'm a little more up to speed on how docs.perl6.org is laid out it's going well 09:50
09:53 sena_kun joined 09:54 p6bannerbot sets mode: +v sena_kun
alessa night yall 09:57
09:57 alessa left 09:59 reach_satori joined 10:00 p6bannerbot sets mode: +v reach_satori 10:01 wamba left 10:05 wamba joined 10:06 p6bannerbot sets mode: +v wamba 10:09 pmurias left 10:12 pmurias joined, p6bannerbot sets mode: +v pmurias 10:16 pmurias left 10:17 pmurias joined, p6bannerbot sets mode: +v pmurias 10:19 pmurias left 10:22 pmurias joined, p6bannerbot sets mode: +v pmurias 10:27 pmurias left 10:28 pmurias joined, p6bannerbot sets mode: +v pmurias 10:37 pmurias left 10:38 pmurias joined, p6bannerbot sets mode: +v pmurias
tyil I remember some piece of code in Perl 6 that allowed one to react whenever a file in a given directory was updated 10:40
does anyone happen to know the code I'm talking about?
10:40 pmurias left
tyil (and if so, can you please link me said code) 10:40
10:40 test3123 joined, p6bannerbot sets mode: +v test3123
dakkar tyil: docs.perl6.org/type/IO::Path#method_watch probably 10:41
tyil: example of use www.thenautilus.net/cgit/MaildirIn...m6?h=bayes
10:41 test3123 left
tyil dakkar: thanks, I can play around with that for a bit :> 10:42
sena_kun a long version - jnthn.net/papers/2015-spw-concurrency.pdf <- here is a talk of jnthn that features nearly the same example. it even has super-tiny test runner code toward the end. :) 10:43
dakkar well, I copied half of that code from Cro after jnthn pointed me to it ☺ 10:44
tyil ok, I seem to have been able to create what I wanted, thanks guys :> 10:45
sena_kun ;)
10:48 pmurias joined, p6bannerbot sets mode: +v pmurias
tyil hmm 10:48
MoarVM panic: Internal error: invalid thread ID 2 in GC work pass
10:57 domidumont left 11:01 pmurias left 11:09 scimon joined, p6bannerbot sets mode: +v scimon
lizmat . 11:17
11:22 leont joined 11:23 p6bannerbot sets mode: +v leont
Kaiepi with cro how do i add queries to an http post request? 11:35
sena_kun Kaiepi, sorry, queries like, mm, what? request parameters? 11:37
body?
Kaiepi ?foo=bar&baz=qux in the url
sena_kun well, you set a body and content-type header to urlencoded. 11:38
give me a second...
Kaiepi, cro.services/docs/reference/cro-ht...quest_body <- I hope example where `application/x-www-form-urlencoded` is will help. 11:39
11:48 pmurias joined, p6bannerbot sets mode: +v pmurias 11:53 sno joined 11:54 p6bannerbot sets mode: +v sno
Kaiepi thanks sena_kun, but i think there's some other issue with my request that's breaking things 11:55
11:56 pmurias left
sena_kun Kaiepi, if you can post a short golfed gist, I can try to help. In case you don't want to look at it closer by yourself, of course. :) 11:57
11:59 reach_satori left 12:02 reach_satori joined 12:03 p6bannerbot sets mode: +v reach_satori
tyil github.com/github/linguist/pull/4149 :D 12:10
12:12 pmurias joined, p6bannerbot sets mode: +v pmurias
tyil pod 6 support seems to be getting some attention again on github 12:14
12:16 pmurias left 12:20 zakharyas left, pmurias joined, p6bannerbot sets mode: +v pmurias
lucasb github-markup is getting Pod 6 support? 12:21
pmurias it would be awesome tho if we moved away from using github as the "front page" for modules (like Perl 5 uses metacpan instead)
12:22 pmurias left
lucasb so github folks intend to use the P5 module Perl6::Pod? 12:22
12:22 pmurias joined, p6bannerbot sets mode: +v pmurias
tyil lucasb: according to the PR discussion, no 12:25
Perl6::Pod hasnt been updated in too long
"This seems like a good idea, but Perl6::Pod looks in need of maintenance -- last commit 3 years ago. I'm concerned it may be out of date, and as someone who doesn't use Perl (5 or 6) themselves I'm unqualified to determine whether it is in fact up-to-date or not.
The problem of getting Perl 6 deployed is still very real; I'll look into it.
"
lucasb so, there's two type of pods: P5 and P6 12:29
If a third variant is created... will we have tripods?
sorry I couldn't resist :D
scimon Oh dear 12:32
timotimo if invalid pod wouldn't abort compilation, would that be trypods?
12:37 pmurias left 12:38 yqt joined 12:39 p6bannerbot sets mode: +v yqt 12:45 domidumont joined 12:46 p6bannerbot sets mode: +v domidumont 12:47 domidumont1 joined, p6bannerbot sets mode: +v domidumont1 12:48 pmurias joined, p6bannerbot sets mode: +v pmurias 12:49 domidumont left 12:53 domidumont joined
Kaiepi sena_kun, the problem ended up being that i fucked up the login code i was writing and got banned from logging in temporarily 12:53
12:53 pmurias left 12:54 p6bannerbot sets mode: +v domidumont, pmurias joined, p6bannerbot sets mode: +v pmurias, pmurias left 12:55 robertle left, domidumont1 left
Geth advent: ludovic-tc++ created pull request #11:
I would be delighted to take the 17th since Nige has already done two articles.
13:02
scimon I am still trying to think about what to write. But I'm on holiday all next week... I'll come up with something in time :) 13:03
sena_kun by the way, can someone check my two Advent posts(grammar-wise, it should be generally ok, but I am not too over-confident)? About 1500+ words each, but there are a lot of code too, so it's smaller. :) 13:07
ufobat___ what is the use or `proto method xxx(|) {*}` because you dont delcare common things and you always redispatch? 13:09
timotimo required in the setting, at least sometimes 13:10
otherwise, you can prevent multi candidates from a parent class from being used
lizmat timotimo: *always* needed in setting, afaik 13:21
lucasb proto foo(| --> Foo) {*}; multi foo(| --> Bar) {*} #<-- Can I know at compile time all the return type constraints from a multi sub/method? 13:28
if possible, then Bar ~~ Foo should be tested and warned if false, IMO 13:29
oops, second {*}, I meant {...} :) 13:30
lizmat lucasb: protos generally have a (|) signature
this feels like a special case
lucasb m: proto foo(| --> Int) {*}; multi foo(| --> Str) { 'hi' }; say foo 13:31
camelia hi
ufobat___ timotimo, ty :)
13:32 nige joined
lizmat lucasb: yeah, that looks like a bug: I guess the static optimizer already codegenned the candidate forgetting about the proto 13:32
13:33 p6bannerbot sets mode: +v nige
lizmat so please make an issue for it 13:33
nige ludovic-tc++ you can take my slot on the 17th for your advent entry 13:34
13:36 wamba left
Geth advent: 9a63d4ba30 | (Ludovic Tolhurst-Cleaver)++ | perl6advent-2018/schedule
I would be delighted to take the 17th.
13:37
advent: 932913bdb3 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | perl6advent-2018/schedule
Merge pull request #11 from ludovic-tc/master

I would be delighted to take the 17th since Nige has already done two articles.
13:37 wamba joined, pmurias joined, p6bannerbot sets mode: +v pmurias, p6bannerbot sets mode: +v wamba 13:39 jmerelo left 13:40 pmurias left 13:43 st_elmo left 13:46 wamba left 13:49 robertle joined 13:50 diggid joined, p6bannerbot sets mode: +v diggid, p6bannerbot sets mode: +v robertle 13:54 wamba joined 13:55 p6bannerbot sets mode: +v wamba 14:00 rindolf joined, p6bannerbot sets mode: +v rindolf 14:02 reach_satori left, yqt left 14:04 cosimo joined, zakharyas joined 14:05 p6bannerbot sets mode: +v cosimo, p6bannerbot sets mode: +v zakharyas 14:08 epony left 14:10 abraxxa left, abraxxa joined, st_elmo joined 14:11 p6bannerbot sets mode: +v abraxxa, p6bannerbot sets mode: +v st_elmo 14:17 diggid left 14:22 reach_satori joined, zacts joined, p6bannerbot sets mode: +v zacts 14:23 p6bannerbot sets mode: +v reach_satori 14:25 zacts left
AlexDaniel how to get access to write an advent post? Asking for ludovic-tc 14:28
unless they already have it of course
sena_kun AlexDaniel, you mean, wordpress-wise? 14:29
AlexDaniel yeah
sena_kun one has to get an id(basically, create an account) and then someone from "admins"(editors?) may help. notably jmerelo, moritz, I think. just email of wordpress acount || id is sufficient. 14:30
*wordpress id
s/acount/account/ 14:31
then you login there after invite is sent, and can change "current site" to Advent one, then add a scheduled post. 14:32
I can provide more detailed instructions if needed, but I think invite goes first and I cannot help do this.
timotimo i can do it
AlexDaniel github.com/perl6/advent/pull/11 14:36
just tell them what they need to do 14:37
14:45 wamba left 14:46 sno left, moony_ joined, p6bannerbot sets mode: +v moony_
moony_ Why does perl 6 not put enums in their own namespace? 14:46
moritz it does 14:47
it just creates lexical aliases if there is no conflict 14:48
m: say Bool::True
camelia True
moony_ ooh
Neat.
is there some sort of spec somewhere? :P
moritz yes, in the form of tests
14:48 sno joined
moritz see github.com/perl6/roast/ 14:48
there are user-facing docs at docs.perl6.org/ 14:49
14:49 molaf joined
moritz and design docs (possibly outdated) at design.perl6.org/ 14:49
14:49 p6bannerbot sets mode: +v sno
moony_ I'm contemplating making my own pseudo-perl 6 implementation for fun. (Altho, i imagine parsing is probably hell) 14:49
14:50 p6bannerbot sets mode: +v molaf
moony_ I'd improve moarVM with optimizations, but C isn't exactly my thing. :/ 14:50
I already can see some obvious optimizations too, just by looking at how it assembles code ;-; 14:53
y u no break dependency chains
the *number one rule* of working with x86-64 processors is to NOT write to the byte/word versions of a register 14:57
unless you break the dependency tree first
writing to a byte/word causes the instr to depend on the previous value, even if the programmer expected it to simply overwrite. 14:58
aaaaaa
15:06 graphene left
timotimo sounds like you want to talk to brrt over in #moarvm 15:07
Ulti moony_: it shouldn't be hell to parse, possibly out of date github.com/perl6/std/blob/master/STD.pm6 but thats a grammar for the language in Perl 6
15:08 graphene joined, p6bannerbot sets mode: +v graphene
timotimo moony_: what kind of speed improvement would you expect from that? 15:09
15:09 brrt joined 15:10 p6bannerbot sets mode: +v brrt
brrt ohai 15:10
15:10 wamba joined
brrt I've been told there's interest in jit optimization opportunities 15:10
15:11 p6bannerbot sets mode: +v wamba
moony_ timotimo: it varies, but it can allow the processor to do it's normal superscalar execution tricks without depending on earlier instrs 15:11
otherwise it has to wait on previous instrs to continue
brrt: o/
timotimo what would i search for to find common tricks to break dependency chains if i still want to use smaller registers? 15:12
moony_ unless you want to clear the register, you can't
but generally the method for clearing the register to break deps is xor reg1, reg1 15:13
brrt moony_: I'm happy to take advice on improving the register usage patterns
I'm actually currently working on the register allocator
15:13 st_elmo left
timotimo when is clearing out the register more expensive than just having the dependency chain there unnecessarily? 15:14
brrt but, beyond taking advice, I'd prefer taking PRs
;-)
moony_ brrt: tl;dr avoid using the byte/word registers whenever possible, as they depend on the previous usage of their "parent" (the doubleword registers) when written
brrt I see
moony_ brrt: yea i understand :P I'm just so used to C++/rust at this point my C code would be shoddy
brrt do you have documentation substantiating that?
moony_ Yup. Intel's own docs for one
brrt (not that I don't believe you, I mean)
moony_ agner's stuff also mentions it
brrt intels docs are large
who's that? 15:15
moony_ leme see if i can find a direct ref
timotimo www.agner.org/optimize/microarchitecture.pdf
brrt thank you :-)
timotimo 8.14 "breaking dependency chains"
brrt
.oO( only 239 more pages to read this christmas )
timotimo literally the only things it mentions are xor and a few similar instructions that you can use to break depenedncy chains by clearing out a register
15:15 zacts joined, p6bannerbot sets mode: +v zacts
brrt well, I'll read it anyway 15:16
moony_ also, an easier optimization to try is to use prefetch instructions to get data into cache before you use it. I may be able to do that one myself if i stop being lazy 15:17
altho the current way assembling stuff is handled makes that difficult
15:18 domidumont1 joined
brrt what's the difficult bit about it? 15:18
15:18 p6bannerbot sets mode: +v domidumont1
brrt Well, one of the things that I think could be difficult is that we don't really have a model of access sequence 15:19
moony_ brrt: i don't really see a good way to see what data is being used from memory :P
brrt Hmmm 15:20
It's an interesting optimization but not one I have too much faith in
15:20 domidumont left
moony_ it's only super noticably effective in tight loops that operate on larger amounts of data 15:21
brrt that's not the majority of perl6 code
or even the important bit, I think
moony_ Yea, it's not. It's just a potential optimization
i.e. for iterating over an array composed of complex structures
brrt if I'd speculate, I'd say that perl6 spends most of its time waiting on cache
moony_ And that's what prefetch is helpful for :D 15:22
brrt I know, but you need predictable access patterns
moony_ Yea
15:22 curan left
moony_ that's the difficult part 15:22
timotimo we do have a logging phase that records stats and such
brrt and if you had those, then the effect of prefetch would be less, because the cache is likely to be already filled
:-D 15:23
but I'm very much against ruling things out
moony_ I will say this, i'm not the world's best source of optimization tips. I spend most of my time making code smaller, not faster :p
brrt well, I'm not the best compiler person in the world. 15:24
Some might question whether I'm a compiler person at all :-P
moony_ no-one is
15:24 graphene left
brrt Anyway, thanks for the tip 15:24
moony_ np
i'm going to keep sifting around how moarvm works, and either make more suggustions or try and do it myself and see how horribly i fail :p 15:25
brrt We have a channel #moarvm
moony_ ok.
brrt It's kind of quiet but if you have any questions I'd say that's the best place to ask
15:25 graphene joined
moony_ mm. I'm gonna go look at how moarvm does static analysis (if any) for now 15:26
15:26 p6bannerbot sets mode: +v graphene
timotimo what you want to look at for that is spesh, even though it is the dynamic optimizer. it has a mode where it doesn't use logged information 15:26
for the case when recorded stats aren't useful
like the same method being used on fifty different types 15:27
"megamorphic" it's probably called in the code somewhere
brrt Perl6 doesn't use very much in the way of static analysis
moony_ does moarvm have a low-level (asm level or asm graph level) optimizer to complement it?
timotimo those are called "certain specialization"
not yet, but almost
brrt moony_: work-in-progress...
moony_ alright, that's something. What branch is it on? I might help a little.
brrt ehm, that would be jit-expr-optimizer 15:28
thing is, there's no fewer than 4 different IRs, not counting the bytecode format
- there's the AST generated by the perl6 parser (it's called QAST)
moony_ ow. Sounds annoying :P 15:29
brrt - there used to be an AST that mapped to the MoarVM instructions, called MAST. I'm not sure how much is left of that, since nine++ wrote a compiler directly from QAST to bytecode (MBC)
timotimo yeah, MAST no longer exists
brrt - there's an IR that is generated for dynamic optimization, called 'spesh graph' 15:30
it's on the same semnatic level as the bytecode but is it more readily modifyable and contains a bunch of extra inforamtion
timotimo spesh graph has BBs and is in SSA with PHIs and such
brrt exactly
timotimo QAST is a rather deep tree with lots of semantic info 15:31
brrt - then, there is a 'register-level' IR called 'expression tree' that is the inptut for the expression JIT. It exposes the low-level details that are embedded in the memory-to-memory model of the MoarVM bytecode
e.g. it contains all the loads and stores and the pointer arithmetic and offsets etc 15:32
moony_ checks what info spesh keeps
timotimo for that you'll want to look at "facts"
brrt - then there is an ASM-level 'IR' called the 'tile list'. It is mostly uninteresting wrt to optimization, except in that it is the thing that the register allocator works on
timotimo run some random perl6 code and set MVM_SPESH_LOG for a deluge of information
moony_ Neat, alright 15:33
brrt semantically, the 'tile list' is on a higher level than the expression tree (well, for CISC architectures anyway)
moony_ timotimo: dumb question. Where? in the commandline? 15:35
moony_ tried commandline, doesn't seem to work
timotimo it's an env var
it wants a filename
brrt as an env var
timotimo potentially /dev/stderr or *out, but it spits many megabytes at you typically 15:36
env MVM_SPESH_LOG=/dev/stdout perl6 -e '' | wc
52893 191222 1865038
moony_ mm
ok
timotimo searching for "Before:" gets you directly to a bunch of lines with bytecode, "facts", ... 15:37
15:37 moony_ left
brrt yeah, there's ways to make it output less, but they're not very well-developed 15:38
15:39 reach_satori left 15:40 reach_satori joined 15:41 p6bannerbot sets mode: +v reach_satori
timotimo oh, ah 15:46
github is planning to go down for 24 hours on dec 12
that's this wednesday
brrt srsly? 15:52
24 hours?
where do you see that?
15:53 jmerelo joined 15:54 p6bannerbot sets mode: +v jmerelo
lucasb developer.github.com/changes/2018-...-brownout/ 15:56
maybe this is specific for this "Legacy GitHub Services Integration", not the whole thing :)
January 7th, 2019: GitHub Services will be suspended for a full 7 days. :D 15:57
jmerelo Wow
Woodi that's realy uncommon in early XXI IT world :) upgrades, security ?
or backup ? :> 15:58
15:58 moray` joined
jmerelo They are phasing out legacy services and giving people the chance to know which ones they're using. 15:58
15:59 p6bannerbot sets mode: +v moray`
jmerelo Apparently pod6 is now included in GitHub github.com/github/linguist/pull/41...-445740542 15:59
16:03 brrt left 16:07 leont left
[Coke] github.com/perl6/doc/blob/master/doc/404.pod6 is still showing the code, not the rendered, fwiw. 16:19
github.com/perl6/doc/blob/master/d...e/AST.pod6 - there's a random link that isn't just mostly html-in-pod6. :)
16:20 xinming_ joined 16:21 p6bannerbot sets mode: +v xinming_ 16:22 moray` left
jmerelo [Coke]: it's been accepted. It will be a long time before it's actually deployed, I'm afraid. 16:22
[Coke]: the .gitignore for Perl 6 was accepted months ago and it was not there yet last time I checked. 16:23
[Coke]: besides, it depends also on another similar PR in markup. This is a first step, though...
16:23 pmurias joined, p6bannerbot sets mode: +v pmurias 16:24 xinming left, telex left, telex joined 16:25 aindilis left, p6bannerbot sets mode: +v telex
pmurias what prefix should I add onto Perl 6 methods when emitting js? 16:29
foo -> p6$foo?
jmerelo pmurias: p6 is OK 16:30
pmurias the whole prefix thing is necessary so that we avoid conflicts with a then method turning a perl 6 object into a "thenable"
16:30 zacts left 16:31 mcmillhj joined 16:32 p6bannerbot sets mode: +v mcmillhj, pierrot left 16:34 pierrot joined, p6bannerbot sets mode: +v pierrot
pmurias jmerelo: thanks, it hopefully should be easy to change that latter if we ends ups being a problem 16:35
mcmillhj If I wanted to get the specific tokens that were matched during a Grammar.parse() call, would Action objects be the best way to do that? Or is there another mechanism ? 16:36
jmerelo mcmillhj: all tokens are in the Match object returned by parse. 16:41
mcmillhj: also, I would appreciate if you posted this question in StackOverflow. We do need more presence there :-) (even if the answer is enough) 16:42
Geth doc: 7e2ebba224 | (JJ Merelo)++ | doc/Type/X/Proc/Async/BindOrUse.pod6
Adds new file refs #517 #1268 closes #1829
16:45
doc: 52000f855e | (JJ Merelo)++ | doc/Type/Proc/Async.pod6
Restores or fixes links
16:46 Kaiepi left 16:47 reach_satori left, Kaiepi joined 16:48 p6bannerbot sets mode: +v Kaiepi 16:55 abraxxa left, abraxxa joined 16:56 p6bannerbot sets mode: +v abraxxa
mcmillhj jmerelo: sure, happy to post there. Got some meetings, but I'll get it up there today 16:59
jmerelo Thanks! 17:00
ufobat___ oh boy.. my p5 code is full of perl6'ish errors 17:02
Geth doc: 86c7b0fd94 | Coke++ | doc/Language/faq.pod6
pass finicky links test
17:06
doc: 25df33de7e | Coke++ | doc/Language/py-nutshell.pod6
allow example to compile
17:07 molaf left 17:08 domidumont1 left 17:12 zakharyas left 17:19 Ven`` joined 17:20 p6bannerbot sets mode: +v Ven`` 17:21 reach_satori joined 17:22 p6bannerbot sets mode: +v reach_satori 17:25 brrt joined, p6bannerbot sets mode: +v brrt 17:28 scimon left 17:30 wamba left, domidumont joined 17:31 p6bannerbot sets mode: +v domidumont, dakkar left 17:32 japhb joined 17:33 p6bannerbot sets mode: +v japhb 17:38 brrt left 17:40 Possum left, Possum joined 17:41 p6bannerbot sets mode: +v Possum, captain-adequate joined 17:42 p6bannerbot sets mode: +v captain-adequate 17:45 wamba joined 17:46 p6bannerbot sets mode: +v wamba 17:52 japhb left 17:54 japhb joined 17:55 p6bannerbot sets mode: +v japhb 17:57 _kristia1 is now known as _kristial, _kristial left 18:03 st_elmo joined 18:04 p6bannerbot sets mode: +v st_elmo 18:09 coet left 18:10 |oLa| joined 18:11 |oLa| left, Ven`` left
mcmillhj jmerelo: stackoverflow.com/questions/537113...om-grammar 18:12
18:14 kensanata left, [Sno] joined 18:15 p6bannerbot sets mode: +v [Sno], Exodist joined 18:16 p6bannerbot sets mode: +v Exodist, sno left, Ven`` joined 18:17 p6bannerbot sets mode: +v Ven`` 18:21 japhb_ left
lucasb look this "eeeeeeeeeeeeeeeeeeeeeeeeeeeeee" repo in github... :D 18:24
needs a Perl 6 version
m: loop { print 'e' }
camelia (timeout)eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee… 18:25
18:25 sauvin left
timotimo m: print "e" xx * 18:27
camelia ...
timotimo ha
m: "e".print for ^*
camelia e
timotimo m: "e".print for ^Inf
18:27 Ven`` left
camelia (timeout)eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee… 18:28
lucasb haha, "(print 'e') xx *" works :)
timotimo we need something shorter, clearly 18:29
jmerelo mcmillhj: thanks! 18:35
18:36 moony_ joined, p6bannerbot sets mode: +v moony_ 18:38 Ven`` joined 18:39 p6bannerbot sets mode: +v Ven`` 18:45 pecastro joined, p6bannerbot sets mode: +v pecastro 18:51 lookatme_q left 18:52 lookatme_q joined 18:53 p6bannerbot sets mode: +v lookatme_q 18:55 ufobat___ left
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/12/10/...li-landed/ 18:56
18:57 moony_ left 19:03 atweiden-air joined, p6bannerbot sets mode: +v atweiden-air 19:09 epony joined, p6bannerbot sets mode: +v epony 19:10 atweiden-air left 19:16 molaf joined, p6bannerbot sets mode: +v molaf 19:18 Ven`` left 19:22 Ven`` joined, Ven`` left 19:34 yqt joined, wamba left 19:35 p6bannerbot sets mode: +v yqt
jmerelo lizmat++ 19:35
El_Che thx lizmat 19:36
sjn yay! new perl 6 weekly! \o/ 19:37
zengargoyle .tell alessa i've been doing Advent of Code in p6. came here a few days back to see if anybody else was... my horrible p5-ish code is at: github.com/zengargoyle/AOC2018 19:39
yoleaux zengargoyle: I'll pass your message to alessa.
zengargoyle if anybody else is doing AoC and has code up i'd like to take a look to just compare TIMTOWTDI 19:42
19:45 domidumont left
[Coke] lizmat++ 19:46
lucasb zengargoyle: here is my day 8's in P5: gist.github.com/lucasbuchala/6a156...60a9df4f6f 19:50
zengargoyle: join our leaderboard: 169430-b1c331b2 19:52
19:53 jmerelo left 19:54 xlat left 19:55 xlat joined, p6bannerbot sets mode: +v xlat
zengargoyle lucasb: cool, i'll check it out. i'm on another site specific leaderboard but everybody is C or Python. i know some peeps here (if they are doing AoC) might have some really pretty p6 solutions. 19:58
it's been a couple of years since i've done much p6 so i'm basically back to beginner retrieving memories and realizing it could have been done much more elegantly. 19:59
20:06 robertle left
lucasb yay, you already joined almost at the top, zengargoyle :) 20:11
I'll take a look at your code. I've a few p6 snippets in unpublisheable form yet 20:13
20:15 wamba joined, p6bannerbot sets mode: +v wamba
lucasb this is a piece of day 4, not the entire code of the solution: gist.github.com/lucasbuchala/8644f...e02c4e8f0b 20:16
I was very happy with the use of grammar and the action class to build the object that I needed :) 20:17
20:29 wamba left
zengargoyle i started to use a Grammer on one day, then just ended up .comb(/\d+/) to get the digits. so far i don't think i've gone beyond ~40 lines and i've only written like 2 subroutines. it's crudely elegant. :) 20:33
20:35 xlat left 20:39 st_elmo left 20:41 robertle joined 20:42 p6bannerbot sets mode: +v robertle 20:49 rindolf left 20:56 rindolf joined 20:57 p6bannerbot sets mode: +v rindolf
gfldex m: $_ = False; my $a; { $a = do when .so { "foo" } }; dd $a; 20:58
camelia Bool $a = Bool::False
gfldex m: $_ = True; my $a; { $a = do when .so { "foo" } }; dd $a;
camelia Any $a = Any
gfldex is this to be expected?
jnthn `when` will call `succeed`, and that'll exit the enclosing block, so in the first case the assignment never happens 21:04
timotimo jnthn: i'm sure we've already discussed it, but how come you can't "last" a whenever block?
jnthn m: $_ = False; my $a; $a = do { when .so { "foo" } }; dd $a; 21:05
camelia Bool $a = Bool::False
jnthn m: $_ = True; my $a; $a = do { when .so { "foo" } }; dd $a;
camelia Str $a = "foo"
jnthn timotimo: Hm, I thought you implemented that a while back? :)
timotimo huh!
gfldex jnthn: Thanks. That seams to be an ENODOC. I shall file. 21:06
timotimo m: use v6.c; react whenever Supply.interval(0.1) { last if $_ > 5; .say };
camelia 0
===SORRY!===
1
2
3
4
5
last without loop construct
jnthn I may be misremembering, but I thought you'd done the next/last control exceptions there :)
timotimo m: use v6.d; react whenever Supply.interval(0.1) { last if $_ > 5; .say };
camelia 0
===SORRY!===
1
2
3
4
5
last without loop construct
jnthn huh, interesting
timotimo well, it'd certainly be a good idea to try it
jnthn I must have misremembered
timotimo i remember something similar, though 21:07
* | | | | f97d5c2aa - implement "next" in whenever blocks (1 year, 11 months ago) <Timo Paulssen> 21:09
i'll probably be able to take this as a template for implementing "last", though 21:10
m: use v6.d; react whenever Supply.interval(0.1) { next if $_ < 5; .say }; 21:12
camelia (timeout)5 21:13
timotimo m: use v6.d; react whenever Supply.interval(0.1) { next if $_ < 5; .say; last if $_ > 10 }; 21:14
camelia 5
===SORRY!===
6
7
8
9
10
11
last without loop construct
timotimo OK
zengargoyle jnthn: was it you i was asking about the " A 21:16
jnthn: was it you i was asking about the " A " vs "A" regex thing?
gfldex m: given True { when :so { say 'outtahere' }; CONTROL { default { say .^name } } } 21:17
camelia outtahere
CX::Succeed
21:18 wamba joined, wamba left
gfldex CX::* is a fairly large ENODOC while very well speced. I shall file. 21:19
21:20 kensanata joined, p6bannerbot sets mode: +v kensanata
jnthn zengargoyle: If I was, I sure don't remember it :) 21:33
21:41 graphene left 21:43 graphene joined 21:44 p6bannerbot sets mode: +v graphene
Elronnd I have one file that is called Terminal.pm6, with a line near the top "unit module Terminal;" In the same directory, there is a file which says 'use Terminal', but when I try to run the latter file, I get an error of "Could not find Terminal at line 1 in:" (and then a list of directories) 21:48
timotimo aye, the current directory isn't in the path to look for modules in because of security reasons 21:49
Elronnd ahh 21:52
how can I import from the current directory, then? 21:53
timotimo "use lib '.'" inside the script or -I. on the commandline 21:54
though that'll literally put the CWD into the path, which is not what you want when you call the script from "somewhere else"
Elronnd that worked. Is this recommended as a best practice? Or is there a better way? 21:55
gfldex I'm not sure if that a better way - but there are Makefiles, you know. 21:56
timotimo what would a makefile do in this case? 21:57
gfldex call `perl6 -I.` for you
timotimo normally modules go into a folder "lib" and scripts go in a folder "bin" and when you install the package that both things are in, it'll be found correctly (based on there being a "provides" section in the META6.json) 21:58
gfldex I got `perl6 -Ilib` bound to F1 in vim. It really depends what you do with that script tho. 21:59
Elronnd why if I say 'use NativeCall; sub refresh() {}' do I get an error about a redeclaration of that routine? 22:04
22:04 mcmillhj left
timotimo nativecall has a sub called that 22:04
though perhaps we'll want to deprecate that name and give it a name more clearly related to nativecall 22:05
just like we have nativecast we could have nativerefresh
Elronnd can I say I don't want that sub? Or is there something like 'static import' where I declare in my import that all symbols I get from nativecall ust be prefixed with NativeCall::?
timotimo hm, you get refresh by either importing everything that's default, or :utils 22:06
22:07 moray` joined
timotimo NativeCall doesn't actually put those subs into package scope, which it probably actually should 22:07
however, you can use this:
22:07 p6bannerbot sets mode: +v moray`
timotimo m: constant NativeCall = do { use NativeCall; NativeCall }; say &NativeCall::refresh 22:08
camelia (Any)
timotimo er
right, no scope
m: constant NativeCall = do { use NativeCall; MY:: }; say &NativeCall::refresh
camelia (Any)
timotimo m: constant NativeCall = do { use NativeCall; say MY::.keys; MY:: }
camelia (&nativecast size_t ssize_t long OpaquePointer &nativesizeof void bool longlong $_ &refresh ulong &postcircumfix:<[ ]> &trait_mod:<is> &cglobal CArray Pointer &explicitly-manage ulonglong)
timotimo m: constant NativeCall = do { use NativeCall; MY:: }; say NativeCall::('&refresh')
camelia 5===SORRY!5=== Error while compiling <tmp>
Combination of indirect name lookup and call not supported
at <tmp>:1
------> 3ll; MY:: }; say NativeCall::('&refresh')7⏏5<EOL>
expecting any of:
argument list
moray` timotimo: Hi, I'm doing a Perl 6 Advent and you're listed as someone who can give me a Perl6 wordpress account. Is that right? 22:09
timotimo m: constant NativeCall = do { use NativeCall; MY:: }; say NativeCall::{'&refresh'}
camelia (Any)
timotimo that's correct
are you ludovic-tc on github?
moray` timotimo: No, MorayJ
Elronnd timotimo: thanks!
timotimo oh, OK
ah, yes, i see you already have a slot 22:10
all i need is your wordpress ID if you already have one, or an email address you'll want to use for the wordpress account
moray` timotimo: You can use moray dot jones at gmail dot com as I don't have a wordpress account 22:11
timotimo: Will I need to get one?
timotimo either that or you'll have someone post your stuff for you 22:12
22:12 aindilis joined
timotimo there's usually a bit of extra work you need to do for everything to work right; notably manually turning < and > into &lt; and &gt; 22:12
moray` timotimo: Just going to check if I've got one. But it's free so can get one if not 22:13
22:13 p6bannerbot sets mode: +v aindilis
Elronnd timotimo: how do I use NativeCall then? I tried replacing is native("whatever") with is NativeCall::{'&native'}("whatever"} and &NativeCall::native("whatever") but got errors both times 22:14
moray` timotimo: Right I do have a Wordpress account, with that email address. Yes, I think I'll probably need to do it myself to get all the kinks ironed out 22:15
timotimo ah 22:16
the multi candidate of trait_mod:<is> for "is native" needs to actually be in lexical scope with that very name 22:17
22:17 kensanata left
Elronnd should I say then my &native = NativeCall::{'&native'} then? 22:18
moray` timotimo: So when it says, "Get a Perl 6 Wordpress account..." is that something different?
timotimo moray`: not entirely sure, where does that come from?
Elronnd: no, i'm not actually sure how best to do this; the only way i can think of is rather wordy 22:19
Elronnd :<
moray` timotimo: It's in the Contributing.MD github.com/perl6/advent/blob/maste...IBUTING.md
Elronnd I just want to wrap a native function and call it refresh
timotimo moray`: i'm not actually sure why it says "Perl 6" there 22:20
wordpress accounts are "global"
Elronnd: yeah, we're running into a crappy situation here :(
nine: got an idea for this?
moray` timotimo: How do I let the Perl 6 advent calendar know where to get my copy from? Sorry bombarding you because I saw you were active... 22:21
timotimo what do you mean "your copy"?
moray` timotimo: My advent calendar entry
timotimo you'll be using the wordpress admin panel and its editor to put it up 22:23
publishing is a bit weird, it'll want you to first select a date, then click the publish button again, or something
i had the benefit that my advent post was finished about 5 minutes after it was supposed to go up :)
lizmat as long as you set publication time to 01:00 rather than 00:00, the date should be ok 22:24
22:24 robertle left
timotimo you know ... now that we have 6pad, it could be a very good idea to have a match-object-to-clickable-html thing and a bot that makes 6pads automagically from stuff on the channel 22:25
moray` timotimo: So will I have permission to publish to the actual advent calendar. Is that something I do with 'sharing'. I can look into it a bit further anyway and see if it makes sense... 22:26
timotimo no, you'll get access to the admin interface of the actual advent calendar wordpress blog 22:30
if you write your post as a github-flavored-markdown document inside a github gist and use that converter script, it'll be "enter a title, copy-paste html into the "html" tab, select 2018 tag, set publish date/time, click publish" i think 22:31
moray` timotimo: Brilliant. Is that what you can do then...get me access to the admin interface of the perl6 wp blog using that email address? 22:33
timotimo aye
i think i've sent an invite link your way, to your gmail address 22:34
did you receive it?
moray` timotimo: Ah, yes! Thanks. I'll have a go at converting etc. Not due until 12th so have a a bit of time Thanks! 22:35
22:35 sena_kun left
timotimo good luck! :) 22:35
moray` timotimo: Thanks...I may need it :-) 22:41
22:41 moray` left 22:47 yqt left 22:52 rindolf left
timotimo b2gills, mornfall, "last" and "LAST" are now supported inside of whenever blocks, as of my last commit to rakudo 22:56
tobs used LAST inside a whenever this afternoon and his tests passed... 23:06
timotimo LAST itself works when the source of the whenever is exhausted 23:07
tobs phew
timotimo and now the LAST is also fired when you manually last 23:08
tobs alright, then it's fine
timotimo have you ever wanted to "redo" a whenever block execution? 23:09
tobs I haven't. I still have to get the hang of supplies, too 23:11
b2gills Elronnd: As a workaround add `is symbol` like this: `use NativeCall; sub my-refresh () is native('libraryname') is symbol('refresh') {}` 23:21
23:26 pmurias left 23:33 Manifest0 left, Manifest0 joined 23:34 p6bannerbot sets mode: +v Manifest0
Kaiepi why would you use a MapHash over a Hash? 23:34
zengargoyle lol, i pontificated a mathy solution for Advent of Code Day 10 on a message board and somebody went and implemented it in Go with a runtime of 5ms. 23:35
i still haven't managed to write the routine to draw the picture of the points....
grar 23:36
23:36 graphene left 23:38 graphene joined, p6bannerbot sets mode: +v graphene 23:39 graphene left
zengargoyle is there a p6 module that does a console framebuffer like thing that handles points in all quadrants? 23:40
23:41 graphene joined, p6bannerbot sets mode: +v graphene
holyghost zengargoyle : maybe SDL2::Raw in a window 23:44
in perl5, SDL should work on the console fb 23:45
the xroot = 0, yroot =0
so you don't have to worry about quadrants, as there are none 23:46
tobs Kaiepi: does a MapHash exist? I can't find a mention of it and it really seems redundant.
Elronnd b2gills: the symbol is actually not called refresh; it's called terminal_refresh (so I'm changing the symbol name anyway). But I want to not break API
Kaiepi oh i could've sworn one existed 23:47
holyghost the term is probably hashmap (C++)
Kaiepi it doesn't my bad
holyghost perl's hash can be said to be a dictionary, a map or a hashmap 23:48
b2gills Elronnd: how about: sub refresh () { use Nativcall; sub terminal_refresh () is native {}; terminal_refresh()}
tobs Kaiepi: there are some *Hash types, paralleling the relationship Map <-> Hash (immutable <-> mutable), like SetHash
Kaiepi yeah i'm aware of those 23:49
Elronnd b2gills: that would probably work 23:51
but then I'd have to wrap all my functions like that
Juerd Haven't tried new versions for a while, and the current version (bleeding edge) is significantly slower than when I last tried. :( 23:52
Is this generally known or is it worth investigating?
Elronnd b2gills: but it might not work, because if I call refresh() from inside of sub refresh() {}, what does it call? Recurse or us ethe NativeCall version?
zengargoyle oh, by console i sorta mean text. more like having (-4,4) and (-5,-6) just show up as 11 lines of ' ' and '*'
23:53 pecastro left
holyghost Elronnd : then you use Parent::Child.refresh 23:54
and so on
zengargoyle taking a bunch of x,y points (that may be negative) and finding the bounding box and making it into Y lines of X characters. 23:55
holyghost zengargoyle : that's a argmax/argmin algorithm 23:56
e.g. using sort
zengargoyle yeah, i did sort points by y,x and then looped of the minmax trying to put a ' ' if no point and a '*' if point... but somehow i keep flubbing it up. :) 23:58
holyghost ok :-) 23:59