»ö« 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 < and > | 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 |