»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:01 cdg__ left, agentzh joined 00:03 cdg_ joined, pyrimidine left 00:06 cdg left 00:09 Actualeyes left 00:11 Actualeyes joined 00:16 jdmmmmm left, pyrimidine joined
tony-o hope that helps perlpilot ^^ 00:18
00:21 pyrimidine left 00:26 pmurias left, cdg joined 00:27 benjibenji joined 00:29 cdg_ left 00:30 cdg left
SmokeMachine m: class C { has Int $.a = 42; has Str $.b where $!a }; say C.new: :b<42> # should it die with this error? 00:32
camelia rakudo-moar f85978: OUTPUT«Cannot look up attributes in a VMNull type object␤ in block <unit> at <tmp> line 1␤␤»
SmokeMachine m: class C { has Int $.a = 42; has Str $.b where $!a }; say C.new: :42b
camelia rakudo-moar f85978: OUTPUT«Type check failed in assignment to $!b; expected <anon> but got Int (42)␤ in block <unit> at <tmp> line 1␤␤»
SmokeMachine m: class C { has Int $.a = 42; has Str $.b where $!a }; say C.new.a 00:33
camelia rakudo-moar f85978: OUTPUT«42␤»
00:33 Ven left 00:34 pyrimidine joined 00:35 pierrot joined 00:37 Ven joined 00:39 pyrimidine left
SmokeMachine m: class C { has Int $.a = 42; has Str $.b where $!a }; say C.new: :42a :42b 00:47
camelia rakudo-moar f85978: OUTPUT«Type check failed in assignment to $!b; expected <anon> but got Int (42)␤ in block <unit> at <tmp> line 1␤␤»
SmokeMachine m: class C { has Int $.a = 42; has Int $.b where $!a }; say C.new: :42a :42b
camelia rakudo-moar f85978: OUTPUT«Cannot look up attributes in a VMNull type object␤ in block <unit> at <tmp> line 1␤␤»
00:49 Ven left 00:51 Actualeyes left, pyrimidine joined
IOninja m: class C { has Int $.a = 42; has Int $.b where { $_ == $!a } }; say C.new: :42a :42b 00:52
camelia rakudo-moar f85978: OUTPUT«Cannot look up attributes in a VMNull type object␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: class C { has Int $.a = 42; has Int $.b where { $_ == $.a } }; say C.new: :42a :42b
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Virtual method call $.a may not be used on partially constructed object (maybe you mean $!a for direct attribute access here?)␤at <tmp>:1␤------> 3 $.a = 42; has Int $.b where { $_ == $.a7⏏5 } }; sa…»
IOninja weird
report it :) 00:53
00:57 pyrimidine left, Actualeyes joined
SmokeMachine :) 00:57
00:58 hartenfels left 01:00 pyrimidine joined
japhb . 01:05
yoleaux 8 Feb 2017 13:37Z <[Coke]_> japhb: please update perl6-bench to use geth.
japhb [Coke], timotimo: done, and aimed it at perl6-dev instead
tony-o m: geth 01:06
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ geth used at line 1. Did you mean 'get', 'getc'?␤␤»
01:08 pierrot left 01:09 zakharyas joined 01:10 pierrot joined, pyrimidi_ joined 01:11 jdmmmmm joined 01:15 pyrimidi_ left 01:26 lukiramu left 01:27 cyphase left 01:28 pyrimidi_ joined
IOninja heh 01:29
SmokeMachine: you got some sort of auto-replace on your email? All "camelia" references have been replaced with "Fernando Corrêa de Oliveira"
01:29 khisanth_ joined
IOninja Oh wait no 01:29
it just shows that after your name I guess.
01:32 cyphase joined 01:34 pyrimidi_ left 01:35 pyrimidi_ joined 01:40 pyrimidi_ left
SmokeMachine Yes, that's my name... I just coped and pasted from my irc client... was that broken? 01:46
01:46 pyrimidi_ joined
IOninja Nah, I just don't see that part on my end :) 01:48
SmokeMachine IOninja: here it's something like this: 01:51
usercontent.irccloud-cdn.com/file/...G_1331.PNG
01:51 pyrimidi_ left
SmokeMachine (But I coped from my browser, and this print is from my phone... but both from irccloud...) 01:53
(They are not paying me... :P)
02:04 jeffythedragonsl joined, pyrimidi_ joined 02:05 jeffythedragonsl left 02:06 drbojingle joined 02:11 jeffythedragonsl joined 02:12 pyrimidi_ left 02:13 DrForr joined 02:17 _28_ria left 02:20 _28_ria joined 02:22 pyrimidine left 02:23 pyrimidine joined 02:28 pyrimidine left 02:34 pierrot left 02:37 cdg joined, jdmmmmm left 02:40 jdmmmmm joined, pyrimidine joined 02:42 labster left 02:45 pyrimidine left 02:47 BenGoldberg joined, ilbot3 joined, ChanServ sets mode: +v ilbot3 02:48 drbojingle left 02:49 jeff_linahan joined 02:55 kalkin- joined 02:56 jeff__ joined, jeff__ left, jeff_linahan left, jeffythedragonsl left, pyrimidine joined 02:57 lep-delete left 02:58 dogbert11 joined, user__ left, pyrimidi_ joined 02:59 moritz left, [particle]1 joined, [particle] left 03:00 rblackwe joined 03:01 freeze joined, moritz joined, lep-delete joined, jdmmmmm left 03:02 altLeCamarade left, LeCamarade left 03:03 jdmmmmm joined 03:04 pyrimidi_ left, altLeCamarade joined, Hotkeys joined 03:05 LeCamarade joined 03:06 simcop2387 joined 03:12 jeek joined 03:17 pyrimidi_ joined 03:22 pyrimidi_ left 03:32 jdmmmmm left 03:35 pyrimidi_ joined, pierrot joined 03:38 Herby_ joined
Herby_ o/ 03:38
03:40 cdg left, pyrimidi_ left
tony-o yo 03:40
03:42 noganex_ joined 03:45 aborazmeh joined, aborazmeh left, aborazmeh joined 03:46 noganex left
Herby_ looking at this recent perl6 article: perltricks.com/article/6-more-things-about-6/ 03:46
in the "Easier Interpolation" section
m: my @names = ['james', 'john', 'sal']; say "These are the @names[]"; 03:47
camelia rakudo-moar f85978: OUTPUT«These are the james john sal␤»
Herby_ m: my @names = ['james', 'john', 'sal']; say "These are the @names[1]";
camelia rakudo-moar f85978: OUTPUT«These are the john␤»
Herby_ hmmm
disregard 03:48
must've mistyped something when i was poking through it
03:49 map joined, map left 03:53 pyrimidi_ joined 03:58 pyrimidi_ left 04:05 jdmmmmm joined 04:07 xtreak joined 04:09 llfourn left 04:10 pyrimidi_ joined 04:16 pyrimidi_ left 04:29 pyrimidi_ joined 04:33 pyrimidine left 04:34 pyrimidi_ left 04:38 _28_ria left, Cabanoss- joined 04:39 _28_ria joined 04:42 Cabanossi left, Cabanoss- is now known as Cabanossi 04:47 pyrimidine joined 04:51 LeCamara- joined, pyrimidine left, pyrimidine joined 04:57 pyrimidine left 05:00 xtreak left 05:01 xtreak joined 05:02 telex joined 05:06 pyrimidine joined 05:07 LeCamarade left 05:11 pyrimidine left 05:14 bwisti left 05:17 benjibenji left 05:21 wamba joined 05:23 pyrimidine joined 05:25 LeCamara- left, LeCamarade joined 05:28 pyrimidine left 05:30 BenGoldberg left 05:32 aborazmeh left 05:35 xtreak left 05:38 xtreak joined 05:39 LeCamarade left, LeCamarade joined 05:40 pyrimidine joined 05:41 bolangi joined, jdmmmmm left 05:44 curan joined, LeCamarade left 05:45 LeCamarade joined 05:46 pyrimidine left 05:49 LeCamarade left 05:50 LeCamarade joined 05:52 LeCamarade left 05:53 jeffythedragonsl joined 05:56 Herby_ left 05:58 jeffythedragonsl left, pyrimidine joined 06:00 rurban joined, rurban left, erdic joined 06:01 khw left 06:03 LeCamarade joined 06:04 pyrimidine left 06:05 LeCamarade left, LeCamarade joined 06:06 LeCamarade left 06:08 LeCamarade joined 06:10 dj_goku joined, dj_goku left, dj_goku joined 06:12 imcsk8_ joined, imcsk8 left 06:16 pyrimidine joined 06:18 faraco joined
faraco m: say '@ARGS' 06:19
camelia rakudo-moar f85978: OUTPUT«@ARGS␤»
faraco m: my $sum = -> $a, $b { a+b}; 06:20
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routines:␤ a used at line 1␤ b used at line 1␤␤»
faraco m: my $sum = -> $a, $b { $a+$b};
camelia ( no output )
faraco m: my $sum = -> $a, $b { $a+$b}; say $sum(2,2);
camelia rakudo-moar f85978: OUTPUT«4␤»
06:21 pyrimidine left 06:22 xtreak left
masak m: sub sum($a, $b) { $a + $b }; say sum 2, 2 06:23
camelia rakudo-moar f85978: OUTPUT«4␤»
06:23 wamba left 06:24 pyrimidine joined
faraco does the idiom one include parenthesis? 06:24
06:24 xtreak joined
faraco m: @object_op_my = Q{7.2 8.2 1.2}; 06:25
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '@object_op_my' is not declared␤at <tmp>:1␤------> 3<BOL>7⏏5@object_op_my = Q{7.2 8.2 1.2};␤»
faraco m: my @object_op_my = Q{7.2 8.2 1.2};
camelia ( no output )
faraco m: my @object_op_my = Q{7.2 8.2 1.2}.map($_ + 0.7);
camelia rakudo-moar f85978: OUTPUT«Use of uninitialized value of type Any in numeric context␤ in block <unit> at <tmp> line 1␤Cannot resolve caller map(Str: Rat); none of these signatures match:␤ ($: Hash \h, *%_)␤ (\SELF: &block;; :$label, :$item, *%_)␤ (HyperIterable:D…»
06:27 altLeCamarade left 06:29 zostay_ joined, pyrimidine left 06:30 xtreak_ joined 06:32 lep_ joined, rmusial_ joined 06:33 zostay left, raiph left, simcop2387 left, lep-delete left, gdonald left, rmusial left, xtreak left, moritz left, drrho left, moritz joined
faraco m: say $^O 06:33
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unsupported use of $^O variable; in Perl 6 please use $?DISTRO.name or $*DISTRO.name␤at <tmp>:1␤------> 3say $^O7⏏5<EOL>␤»
06:33 zostay_ is now known as zostay
faraco m: say $?DISTRO.name 06:33
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$?DISTRO' is not declared. Did you mean 'Distro'?␤at <tmp>:1␤------> 3say 7⏏5$?DISTRO.name␤»
faraco m: say $?DISTRO
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$?DISTRO' is not declared. Did you mean 'Distro'?␤at <tmp>:1␤------> 3say 7⏏5$?DISTRO␤»
06:33 simcop2387 joined
masak m: say Distro 06:33
camelia rakudo-moar f85978: OUTPUT«(Distro)␤»
faraco m:say Distro.eager
06:34 gdonald joined
faraco m: say Distro.eager 06:34
camelia rakudo-moar f85978: OUTPUT«((Distro))␤»
06:34 drrho joined
masak m: say $*DISTRO 06:34
camelia rakudo-moar f85978: OUTPUT«opensuse (13.2.Harlequin)␤»
06:34 kyan left, john51 left
masak faraco: how did you think to try `Distro.eager`? :P 06:34
06:34 john51 joined
masak faraco: I *think* $?DISTRO should exist, too, but doesn't seem to yet. 06:35
faraco m: ha, I forgot that environment variable is through $*ENV
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤ I used at line 1␤Undeclared routines:␤ environment used at line 1␤ forgot used at line 1␤ ha used at line 1␤ is used at line 1␤ that used at line 1. Did you …»
masak I'm over here \o 06:36
faraco masak: I just looked at the eager routine. 06:37
I thought it something that can print the value of that, well I realized it just return the object in list
m: say (1..10).seq 06:39
camelia rakudo-moar f85978: OUTPUT«No such method 'seq' for invocant of type 'Range'␤ in block <unit> at <tmp> line 1␤␤»
faraco m: say seq(1,10)
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ seq used at line 1. Did you mean 'set', 'sec'?␤␤»
Geth doc: antquinonez++ created pull request #1187:
Did some extensive editing of the grammar tutorial.
06:40
faraco m: say 1..Inf.is-lazy
camelia rakudo-moar f85978: OUTPUT«1..Bool::False␤»
faraco Did I do wrong with is-lazy? 06:41
Returns True if the sequence is lazy and potentially infinite, and False otherwise
samcv can i make .base work for base 1 numbers? 06:44
m: say 10.base(1)
camelia rakudo-moar f85978: OUTPUT«base argument to base out of range. Is: 1, should be in 2..36␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
samcv should say like 1111111111
06:51 RabidGravy joined
moritz faraco: precedence 06:51
m: say (1..Inf).is-lazy
camelia rakudo-moar f85978: OUTPUT«True␤»
faraco ah, dang. Thanks 06:53
06:54 CIAvash joined
faraco Is Task::Star deprecated, OO:Monitors not found on fresh install. 06:58
nevermind 07:01
Seems, some of the bundled modules is not needed for me.
m: say "Doctor".trim 07:02
camelia rakudo-moar f85978: OUTPUT«Doctor␤»
faraco m: say "Doctor"
camelia rakudo-moar f85978: OUTPUT«Doctor␤»
masak m: say " Doctor\t\t\t\t\t ".trim 07:04
camelia rakudo-moar f85978: OUTPUT«Doctor␤»
07:04 imcsk8_ left, imcsk8 joined 07:05 xtreak_ left
samcv how do i search a string and find the first character which is NOT a specified character? 07:06
the fastest way
07:07 travis-ci joined
travis-ci Doc build passed. Antonio Quinonez 'Merge branch 'master' of github.com/perl6/doc into grammars-pod' 07:07
travis-ci.org/antquinonez/doc/builds/199880754 github.com/antquinonez/doc/compare/grammar
07:07 travis-ci left
faraco masak: you got me again. thank you 07:07
m: say "Doctor".first
camelia rakudo-moar f85978: OUTPUT«Doctor␤»
faraco so it's for list 07:08
moritz correct
faraco my @List = Q{data omix m}.first.say 07:09
m: my @List = Q{data omix m}.first.say
camelia rakudo-moar f85978: OUTPUT«data omix m␤»
07:09 xtreak joined
faraco wait what 07:09
m: my @List = Q{data omix m}; say @List.first
camelia rakudo-moar f85978: OUTPUT«data omix m␤»
faraco m: my @List = Q{data omix m}; say @List.split.first 07:10
camelia rakudo-moar f85978: OUTPUT«Cannot resolve caller split(Str: ); none of these signatures match:␤ (Str:D $: Regex:D $pat, $limit is copy = Inf;; :$v is copy, :$k, :$kv, :$p, :$skip-empty, *%_)␤ (Str:D $: Cool $match;; :$v is copy, :$k, :$kv, :$p, :$skip-empty, *%_)␤ (St…»
07:14 darutoko joined, andrzejku left
faraco m: say 'doctor'.titlecase 07:15
camelia rakudo-moar f85978: OUTPUT«No such method 'titlecase' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
faraco m: say 'doctor'.tc 07:16
camelia rakudo-moar f85978: OUTPUT«Doctor␤»
faraco m: say 'doctor'.tc - 1
camelia rakudo-moar f85978: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5Doctor' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
faraco m: say 'doctor'.chars 07:17
camelia rakudo-moar f85978: OUTPUT«6␤»
faraco say 'Doctor'.index 07:18
m: say 'Doctor'.index
camelia rakudo-moar f85978: OUTPUT«Cannot resolve caller index(Str: ); none of these signatures match:␤ (Cool:D $: Cool $needle, *%_)␤ (Cool:D $: Cool $needle, Cool $pos, *%_)␤ (Str:D $: Str:D $needle, *%_)␤ (Str:D $: Str:D $needle, Int:D $pos, *%_)␤ in block <unit> a…»
faraco m: index("Doctor",'t').say 07:19
camelia rakudo-moar f85978: OUTPUT«3␤»
faraco m: rindex("Doctor",'t').say
camelia rakudo-moar f85978: OUTPUT«3␤»
samcv ok well i'm going to add .base(1) and .parse-base(1), because why not
it's trivial to support
faraco m: say 10.base(2) 07:21
camelia rakudo-moar f85978: OUTPUT«1010␤»
faraco m: say 10.base(8)
camelia rakudo-moar f85978: OUTPUT«12␤»
faraco m: say 10.base(16) 07:22
camelia rakudo-moar f85978: OUTPUT«A␤»
faraco m: say 90000.base(16)
camelia rakudo-moar f85978: OUTPUT«15F90␤»
faraco how does base 1 work?
07:22 wamba joined
samcv 10.base(1) # 1111111111 07:23
moritz m: say 5.base(1)
camelia rakudo-moar f85978: OUTPUT«base argument to base out of range. Is: 1, should be in 2..36␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
samcv 1.base(1) # 1
faraco oh...so 10000000 = x1
samcv heh
faraco I mean, everything turned into 1
samcv yeah basically
and .parse-base i got it so that it returns the correct value, and also returns a parse error and tells you where the incorrect character is 07:24
faraco nice. Is this the thing we called lazy evaluation? Not really familiar with that term.
samcv like if you do "1110111".parse-base(1) it'll show you the error button at the 0
not really lazy
m: my @array = lazy gather { take 1 for 0..* }; say @array[0] 07:25
camelia rakudo-moar f85978: OUTPUT«1␤»
samcv that is lazily taking the values. you can do whatever you want in a lazy gather block and it'll only compute up to how much it needs to
faraco sounds like map?
samcv i used it recently for parsing some of the unicode test files
07:25 pyrimidine joined
samcv i guess in some ways idk 07:26
you can do a lot more code inside gather blocks
it's way more flexible
faraco I really need to learn functional stuff in Perl 6, haha :D
moritz really needs to write a chapter on functional stuff in Perl 6
samcv so i have it slurp the lines of my file (not sure if slurp is lazy it may be)
and then it lazily gathers lines
moritz lines is lazy, slurp is not 07:27
samcv having to process like hex numbers into cp's and extract the comments and other info
and put it into a lazy array full of pairs
moritz slurp returns a string, strings aren't lazy
samcv slurp.lines?
lines is lazy
moritz $filehandle.lines
faraco docs.perl6.org/language/functions , this is the one that I think has the most functional stuff (I saw that Lambda). 07:29
07:30 pyrimidine left
moritz this teaches you how to write functions, not functional programming 07:30
samcv but lazy gather helped so much cause the unicode file is like 100,000+ lines 07:31
maybe 300,000?
more?
idk it's 17MB tho
moritz so don't read it with slurp, read it with lines
samcv the slurping isn't the slow part
it's processing it 07:32
also how do i read it by line, curious
timotimo samcv: tbh, if you want to find the first non-1, i'd regexmatch against ^'1'+ and look at .end
samcv reading the file is plenty fast, but might as well make it lazy
well i came up with something already
timotimo OK
samcv my int $i = 0;
while $i++ < $chars {
last unless nqp::eqat(self, '1', $i);
}
timotimo that's fair
samcv then I use the $i for the error message 07:33
moritz my $fh = open $thefile; for $fh.lines -> $line { ... }
samcv so it knows where the bad char is. this is the slow path btw
faraco so, in Perl 6, when you should use lines and slurp?
samcv i do `if self eq nqp::x('1', $chars)`
and if that is true then it just returns the number of characters in the string
masak faraco: when something can be processed line-by-line, use .lines
faraco: when you have to have the whole content at once,use .slurp
samcv IO::Path.lines then? 07:34
faraco so, this means lines is much more flexible then, because it can operate on the line compared to slurp, that operate on the whole content?
samcv yeah 07:35
slurp.lines the lines part is lazy but not the slurp
so the script starts a fraction of a second faster now
faraco ah :)
samcv i have an SSD so reading 17MB is pretty fast
if i put the lazy gather in a start block... can i thread this?
masak faraco: also, it's possible you won't need to read all the lines. in that case .lines would also be faster 07:36
or at least potentially claim less memory
samcv cool nice, added a start block, and now it's threaded 07:37
timotimo slurp grabs every last byte into memory, lines is allowed to drop earlier parts of the file again
samcv seems to be going much faster now
idk maybe it's not faster i only see one MVM process in `htop` 07:38
timotimo actually it should keep its extra thread as soon as it encounters a single start block
faraco so like, for $fh.IO.lines -> ln { ..operate on data.. unless eol }
timotimo forget about "eol" 07:39
it just stops running the for loop when the file ends
samcv timotimo, huh?
why am i not seeing two processes?
faraco or let's change eol to any line, let's say, the file has 100 lines, I want to read to 20.
timotimo maybe you can configure htop to not show threads
then you'd use "last" 07:40
samcv top only shows one too
faraco oh, break
timotimo well, htop does have "hide userland process threads", but when top doesn't show a second one, that's probably authoratitive
faraco ..if (ln 20) { last; }
or last if ln 20 07:41
samcv yeah it doesn't seem to run any faster with a start block either
oh well
timotimo you also have to use either $ln or \ln
faraco forgot the sigils :3
timotimo .o( "forget about the sigil" - the goblin king ) 07:42
faraco till today, I do not understand what does .o(BLAH) means?
timotimo thought bubbles
like in a comic 07:43
samcv
.oO(thinking intently)
faraco It's been a long time I didn't touch a comic
samcv u: speech bubble
unicodable6 samcv, U+1F5E8 LEFT SPEECH BUBBLE [So] (🗨)
samcv, U+1F5E9 RIGHT SPEECH BUBBLE [So] (🗩)
samcv, gist.github.com/f3e8b8f31a3e9b90b6...3903e09603
samcv u: thought bubble
unicodable6 samcv, U+1F5EC LEFT THOUGHT BUBBLE [So] (🗬)
samcv, U+1F5ED RIGHT THOUGHT BUBBLE [So] (🗭)
timotimo google image search should help
samcv 🗬 thinking intently 🗭
timotimo doesn't display in my terminal ;( 07:44
samcv get more fonts
faraco he
samcv just install noto-emoji and symbola
and you should be mostly — set
faraco are you on fedora or something other than Debian 07:45
timotimo i already had symbola installed, but not the noto emoji font 07:46
maybe this helps
samcv do you think a multi for .base(1) is gonna be faster than putting an if inside of the other multi?
it already has some other multi's based on no of arguments
timotimo not entirely sure, measuring is always best anyway 07:48
faraco m: $*DISTRO.say
camelia rakudo-moar f85978: OUTPUT«opensuse (13.2.Harlequin)␤»
faraco m: q:x{uname -r}
camelia rakudo-moar f85978: OUTPUT«qx, qqx is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting line 1␤ in sub QX at src/RESTRICTED.setting line 11␤ in block <unit> at <tmp> line 1␤␤»
faraco alrighty 07:49
timotimo were you still confused about Q{a b c} not giving you a list?
samcv i think it would be hard to see a difference
faraco m: shell 'uname -r'
camelia rakudo-moar f85978: OUTPUT«shell is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting line 1␤ in sub shell at src/RESTRICTED.setting line 15␤ in block <unit> at <tmp> line 1␤␤»
07:50 CIAvash left, _28_ria left
samcv yeah no it doesn't seem to measurably slow it down 07:50
faraco m: 0..20.eager.say 07:52
camelia rakudo-moar f85978: OUTPUT«WARNINGS for <tmp>:␤Useless use of ".." in expression "0..20.eager.say" in sink context (line 1)␤(20)␤»
faraco m: (0..20).eager.say
camelia rakudo-moar f85978: OUTPUT«(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20)␤»
faraco Yeah, finally! I'm beating you precedence. Face this wrath!
moritz faraco++ 07:53
07:53 zakharyas left
timotimo m: 0..20 .eager.say 07:54
camelia rakudo-moar f85978: OUTPUT«WARNINGS for <tmp>:␤Useless use of ".." in expression "0..20 .eager." in sink context (line 1)␤(20)␤»
timotimo oh, interesting
i thought that was a trick to get lower precedence on the method call?
moritz masak: I just learned there's a book called "How to Break Software". Had to think of you immediately :-)
timotimo: it's lower precedence, but I don't know how much lower 07:55
faraco Anyone try to port the DCONWAY's Bleach Perl 5 module into Perl 6? 07:56
trying* 07:57
samcv hah
because reasons?
timotimo yeah, we have that
buggable: eco scrub
buggable timotimo, Acme::Scrub 'For REALLY clean code.': github.com/thundergnat/Acme-Scrub
faraco oh, different name? 07:58
hah, I'm gonna have fun
timotimo yeah, our first Dancer clone was also called Bailador
rathen than just Dancer
samcv “ It is possible to recover the original code... but why would you want to?”
fact 07:59
timotimo truth
faraco "because I want to learn how that works".
samcv how does that work 08:00
faraco I don't know.
moritz would love an Acme::Scrub that whitespace-encodes moarvm bytecode and executes that
samcv github.com/thundergnat/Acme-Scrub/.../Scrub.pm6
it's really short
faraco For real?
oh man
samcv how does it work tho
moritz m: my @socks = '​'.comb; say @socks.perl 08:01
camelia rakudo-moar f85978: OUTPUT«["", "​"]␤»
samcv what.
moritz m: my @socks = '​'.comb; say @socks>>.uniname
camelia rakudo-moar f85978: OUTPUT«[ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE]␤»
samcv so 08:02
faraco Running a hidden code.
samcv that would just make no spaces in your code
timotimo there's also Anguish, which is a brainfuck-oriented language with only non-printing unicode characters
moritz so it makes ZERO WIDTH NO-BREAK SPACE to 0 and ZERO WIDTH SPACE to 1
s/makes/maps/
samcv lol 08:03
can't you just have a file of 1 and 0 and compile it to anguish
moritz and uses that to binary-encode a blob
samcv well it cleaned up my code 08:04
and i don't see the original characters inside the hexdump
timotimo anguish encodes instructions, not whole values
samcv so
08:04 cibs left
timotimo though you can create a program that outputs any given sequence 08:04
just like brainfuck hello world works 08:05
faraco For sure, if Acme::Scrub function as Bleach, than I praise the Perl 6 to bring a lot of sugars to make the code super compact and readable.
samcv lol.
how does it work if the original characters are not in the output?
if i hexdump it
do i need to utf-8 dump it
timotimo maybe scrub is currently broken? 08:06
08:06 cibs joined
faraco oh noo, I'm trying to install it 08:06
samcv no it works fine
it filled my code with no width spaces
SEMICOLON SPACE NUMBER SIGN ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO 08:07
WIDTH SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH SPACE ZERO WIDTH SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WIDTH NO-BREAK SPACE ZERO WI
oh no i see some letters here
at the very end
nope it just says for really clean code
so howwwwwwwwww
what method does perl 6 allow for this
faraco ew..it actually obsfucate the code 08:08
samcv more secure
faraco It's just for fun though, so I don't think most Acme::Modules can be taken seriously.
but some of them really useful to me.
samcv oh faraco acme scrub just evals it :) 08:12
faraco :'(((((((
samcv they take the no break spaces and then decode it and then eval
shame on them for using a base 2 system
there's more zero width chars i think?
u: zero width
unicodable6 samcv, U+200B ZERO WIDTH SPACE [Cf] (​)
samcv, U+200C ZERO WIDTH NON-JOINER [Cf] (‌)
samcv see
unicodable6 samcv, gist.github.com/1aabbd1256a001725f...9f8e3d5747
samcv should have used a base4 system
and would be able to be way smaller
moritz submit a pull request! 08:13
samcv :\
moritz or write your own Acme module
samcv making the world a better place
moritz I hear it's a rite of passage among Perl developers :-)
faraco There is more than one module to use.
moritz though I've only written a p5 Acme module so far 08:14
08:14 _28_ria joined
faraco that takes me a day to choose either Dancer2 or Mojo to test micro framework 08:14
moritz search.cpan.org/~moritz/Acme-Curse-...e/Curse.pm
samcv i want one that bleaches all your files
on your whole computer
faraco What Acme::Burn will be? hmm?
samcv delete 08:15
EVERYTHING
well replace everything with fire emoji
fire emoji and zero width characters
moritz +1
samcv heh
making the world a better place dammit! 08:16
08:16 xtreak left
timotimo imagine a crypto trojan that gives files that treatment 08:16
people would be so confused
08:19 xtreak joined
samcv heh 08:19
moritz ransomware 08:20
you have to pet camelia to get it decrypted!
faraco Camelia has the sixth sense. 08:21
m: say "200B".base(100 08:25
camelia rakudo-moar f85978: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> 3say "200B".base(1007⏏5<EOL>␤»
faraco m: say "200B".base(10)
camelia rakudo-moar f85978: OUTPUT«No such method 'base' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
faraco m: say "200B".ord 08:26
camelia rakudo-moar f85978: OUTPUT«50␤»
faraco m: say "200B".char
camelia rakudo-moar f85978: OUTPUT«No such method 'char' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
faraco m: say "200B".chr
camelia rakudo-moar f85978: OUTPUT«Cannot convert string to number: trailing characters after number in '03200⏏5B' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
08:27 pyrimidine joined 08:28 abraxxa joined
faraco m: say "9,2,8,10".comb(/\d+/).join(':'); 08:29
camelia rakudo-moar f85978: OUTPUT«9:2:8:10␤»
timotimo m: say "0x200B".chr
camelia rakudo-moar f85978: OUTPUT«​␤»
faraco m: say "9,2,8,10".comb(/\./).join(':'); 08:30
camelia rakudo-moar f85978: OUTPUT«␤»
faraco m: say "9,2,8,10".comb(/\.*/).join(':');
camelia rakudo-moar f85978: OUTPUT«::::::::␤»
faraco m: say "9,2,8,10".comb(/.*/).join(':');
camelia rakudo-moar f85978: OUTPUT«9,2,8,10:␤»
08:31 xtreak left 08:32 pyrimidine left
faraco m: say so if "Datac".contains 'c'; 08:33
camelia rakudo-moar 295b0b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3say so if "Datac".contains7⏏5 'c';␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ stateme…»
08:33 robertle joined
faraco m: say so if "Datac".contains('c'); 08:33
camelia rakudo-moar 295b0b: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ if used at line 1␤␤»
faraco m: say so "Datac".contains('c');
camelia rakudo-moar 295b0b: OUTPUT«True␤»
08:33 xtreak joined
faraco m: $*PID 08:34
camelia ( no output )
faraco m: $*PID.say
camelia rakudo-moar 295b0b: OUTPUT«15753␤»
faraco m: say $*KERNEL; 08:36
camelia rakudo-moar 295b0b: OUTPUT«linux (3.16.7.42.default)␤»
faraco m: say $*PERL;
camelia rakudo-moar 295b0b: OUTPUT«Perl 6 (6.c)␤»
timotimo do you know you can private-message camelia, too?
faraco oh
ty 08:37
timotimo NP :) 08:38
08:40 ufobat joined
faraco A question, why Perl 6 not enabling the my by default? 08:42
08:43 wamba left
DrForr Because that leads immediately to people typoing variable names and spending hours trying to find a spelling mistake, much like what happens to lots of people in Perl 5. 08:44
timotimo one of the most requested things for perl6 was to make "use strict" the default, which also means "you always have to put 'my'" 08:46
08:46 labster joined, dakkar joined
faraco hmm I see, thank you. 08:47
timotimo you can "no strict", though
then it'll give undeclared variables "our" by default
but i have to warn you, it'll be extremely slow 08:49
08:49 pyrimidine joined
DrForr Speaking of which I didn't get a single question about performance during the talk, at least that I can remember :) 08:50
timotimo clearly people haven't tried perl6 out hard enough 08:51
08:51 xtreak left
DrForr Gotta start somewhere :) 08:51
faraco so, is Perl 6 fast? :P 08:52
08:52 pyrimidi_ joined, pyrimidine left
DrForr Yes, for several values of 'fast' :) 08:52
timotimo the bad thing is that the difference between similar pieces of code can be quite extreme
so it's hard to figure out performance
OTOH, it means that little changes can get you 100x improvements in performance sometimes 08:53
08:53 thdr|2 left 08:54 rindolf joined 08:57 pyrimidi_ left 09:01 faraco left 09:08 jonas1 joined
timotimo if someone who's good at both perl5 and perl6 could come up with a nice suite of regexes for multiple tasks, that'd be nice 09:10
like, a benchmark suite of sorts
also, multiple implementations from p5 and p6 for each task
TEttinger I'd be curious to see the results. P6's grammars seem much more powerful 09:12
not sure if you'd test the composable grammars or just the part that's directly comparable
timotimo this would purely be for regex performance 09:13
so you don't do any grammars at all, unless a perl5 regex is better implemented as a grammar in p6 09:14
but even then there ought to also be a somewhat-1:1 translatino
basically i'm imagining having a list of bar charts for each of the tasks that shows how each variant performs, and then having them sorted by speed
it'd obviously have to go over a rather big piece of data, and perl6 and perl5 startup time has to be subtracted 09:15
09:15 itcharlie1 joined
timotimo because startup time is so punishing for perl6, and it'd probably be more suited for long-running programs anyway 09:17
TEttinger "count how many dicks are in moby dick" 09:18
timotimo also, there ought to be a script to set up all the data sources
09:36 TEttinger left 09:39 robertle left
samcv think it's so odd that this works: 09:46
m: my $r = ((1,)..'a'); say $r[2]
camelia rakudo-moar a21d2f: OUTPUT«3␤»
samcv m: my $r = ((1,)..'a'); say $r[*]
lol ok that's gonna time out
m: my $r = ((1,)..'a'); say $r.tail
camelia rakudo-moar a21d2f: OUTPUT«(timeout)» 09:47
samcv m: my $var = 'a'..1; say $var.head
camelia rakudo-moar a21d2f: OUTPUT«Nil␤»
09:48 z448 joined, sena_kun joined, z448 left 09:50 ocbtec joined 09:51 xtreak joined 09:53 bjz joined 09:55 pyrimidine joined
timotimo .tell jnthn you're generating benchmark plots from perl6-bench version ea2a4d0, but there's been 7 commits since then; you committed to perl6-bench for that exact commit; maybe your "origin" is your own fork or something? 09:58
yoleaux timotimo: I'll pass your message to jnthn.
09:59 pyrimidine left
jnthn timotimo: Manually done a pull now so it's up to date again, at least 10:04
yoleaux 09:58Z <timotimo> jnthn: you're generating benchmark plots from perl6-bench version ea2a4d0, but there's been 7 commits since then; you committed to perl6-bench for that exact commit; maybe your "origin" is your own fork or something?
10:08 pochi joined, bjz left 10:24 literal_ is now known as literal 10:29 bjz joined 10:31 cgfbee left 10:51 abraxxa left, pyrimidine joined 10:52 pyrimidi_ joined, pyrimidine left 10:56 user9 joined 10:57 pyrimidi_ left 11:06 espadrine joined, abraxxa joined 11:24 labster left
jnthn .tell tony-o Double-close crash and various other operation-on-closed-socket issues are now sorted out (hopefully!) and test covered :) 11:36
yoleaux jnthn: I'll pass your message to tony-o.
samcv huggable, hug me 11:46
huggable hugs samcv
samcv huggable, hug huggable
huggable hugs huggable
samcv huggable, help 11:47
huggable samcv, nothing found
samcv lol.
11:48 xtreak left
IOninja uhoh... Canada under attack from USA... 11:48
They plan to send us Sara Palin!
huggable: source 11:49
huggable IOninja, See github.com/zoffixznet/huggable
11:51 xtreak joined, ufobat left, pyrimidine joined
DrForr Most of us don't want her :) 11:54
IOninja We'll retaliate by sending you another Justin Beiber ;) 11:56
11:56 pyrimidine left
DrForr o/' Celine Dion, you soft rock my world o/' 11:56
samcv IOninja, some people would not be unhappy with that 12:01
12:05 bjz_ joined 12:06 wamba joined 12:07 bjz left
IOninja You're right. Need to up the ante. A Justin Beiber singing "My Heart Will Go On" but to the music of "Complicated", and when he gets older he'll run for president claiming he didn't know he had Canadian citizenship ;) 12:09
12:10 Sound joined
samcv IOninja, might as well just say you will retaliate by taking back Justin Bieber lol 12:11
12:12 sufrostico joined, xtreak left 12:14 xtreak joined, thdr|2 joined 12:15 cognominal joined 12:16 xtreak left 12:17 xtreak joined, yqt joined 12:23 Technaton joined 12:24 eroux joined 12:27 xtreak left, xtreak joined
moritz IOninja tries to hit *everyone* 12:28
masak .oO( ...and that's how you create a pop hit ) 12:29
12:33 xtreak left 12:34 xtreak joined 12:44 Actualeyes left 12:45 abraxxa left 12:47 pyrimidine joined 12:49 geekosaur left 12:50 geekosaur joined 12:52 pyrimidine left 12:53 pyrimidine joined 12:58 pyrimidine left 13:00 lukaramu joined, xtreak left, xtreak joined 13:04 Sound left 13:10 zakharyas joined 13:15 xtreak left 13:16 xtreak joined 13:17 hchienjo joined 13:21 hchienjo left, xtreak left 13:23 abraxxa joined 13:27 wamba left, itaipu joined 13:28 xtreak joined, xtreak left 13:29 Sound joined 13:30 lukiramu joined 13:31 wamba joined 13:33 lukaramu left 13:38 bjz joined 13:40 bjz_ left 13:54 llfourn joined, pyrimidine joined 13:56 llfourn left 13:57 llfourn joined 13:59 pyrimidine left 14:01 llfourn left, llfourn joined 14:04 llfourn left 14:06 llfourn joined 14:07 bjz left 14:29 bwisti joined 14:37 zakharyas left
tony-o timotimo: jnthn: can either of you verify i can commit to perl6 org's git? 14:39
yoleaux 11:36Z <jnthn> tony-o: Double-close crash and various other operation-on-closed-socket issues are now sorted out (hopefully!) and test covered :)
tony-o .tell jnthn you rock! thank you 14:40
yoleaux tony-o: I'll pass your message to jnthn.
IOninja I can. What's your username?
tony-o tony-o
IOninja Yup. says already a member of `perl6` team and that one has commit perms to most of repos 14:41
tony-o cool, thank you IOninja 14:42
.tell jnthn that seems to have done the trick, thank you! 14:46
yoleaux tony-o: I'll pass your message to jnthn.
14:47 itaipu left
moritz tony-o: what's your github username? 14:49
ah, seems IOninja was faster
IOninja They don't call me a ninja for nothing! 14:50
tony-o why do they call you IO ?
IOninja Because I'm doing the IO grant for TPF :P 14:51
tony-o nice 14:52
14:52 Actualeyes joined
moritz thought IOninja was a ninja from the moon IO 14:52
tony-o so i'm going to move HTTP::Server::Async into the perl6 namespace so it has more oversight than just me, is there any opposition to that ? 14:53
jeek I keep thinking IOError, who is a completely different person. (Presumably)
14:53 sufrostico left
moritz tony-o: not from me, run with it! 14:53
14:53 itaipu joined
tony-o cool 14:54
is there other modules that i should consider tossing into that namespace?
modules.zef.pm/profile/github:tony-o - here is a list of what i have out there 14:55
14:55 sufrostico joined 14:56 pyrimidine joined 14:58 gdonald left, gdonald joined
tony-o does it make sense to move HTTP::Server in there? it's a Role 14:58
and H:S:A does it.
15:00 sufrostico left 15:01 pyrimidine left 15:11 itaipu left 15:15 kaare_ joined, kaare__ left 15:18 curan left 15:22 xtreak joined, smls joined
smls Is it safe to use bisectable with an expression that hangs indefinitely on some Rakudo versions? 15:24
15:24 kalkin- left
IOninja smls: yes 15:25
smls ok
bisectable6: say <a b c d e f>.rotor: 1...*;
bisectable6 smls, Bisecting by exit signal (old=2015.12 new=1615c83). Old exit signal: 1 (SIGHUP)
IOninja hm, I guess "yes" is not entirely accurate :) It *does* have a timeout, but the way it's currently made is bisecting prevents it from responding to server pings, so it can get nixed 15:26
bisectable6 smls, bisect log: gist.github.com/6777a66da829788b9e...e4e7782bf7 15:27
smls, (2017-01-17) github.com/rakudo/rakudo/commit/d7...6f67efd5fe
IOninja woo
m: say <a b c d e f>.rotor: 1...*;
camelia rakudo-moar 1615c8: OUTPUT«((a) (b c) (d e f))␤»
IOninja looks right
mc: say <a b c d e f>.rotor: 1...*;
smls nice, a performance improvement by lizmat++ that accidentally fixed a bug too 15:28
committable6 IOninja, ¦«2015.12»: «timed out after 10 seconds, output»: «exit signal = SIGHUP (1)»
IOninja \o/
jnthn Quick, add a test. ;)
yoleaux 14:40Z <tony-o> jnthn: you rock! thank you
14:46Z <tony-o> jnthn: that seems to have done the trick, thank you!
jnthn \o/
smls IOninja: It's #129175
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129175
jnthn tony-o: yay :)
smls I'm cechking up some on some of my older RT tickets
IOninja m: -> *@a { @a.is-lazy.say }(1…∞)
camelia rakudo-moar 1615c8: OUTPUT«True␤»
IOninja bisect: -> *@a { @a.is-lazy.say }(1…∞)
bisectable6 IOninja, Bisecting by exit signal (old=2015.12 new=1615c83). Old exit signal: 1 (SIGHUP) 15:29
IOninja -> **@a { @a.is-lazy.say }(1…∞)
m: -> **@a { @a.is-lazy.say }(1…∞)
camelia rakudo-moar 1615c8: OUTPUT«False␤»
IOninja m: -> +@a { @a.is-lazy.say }(1…∞)
camelia rakudo-moar 1615c8: OUTPUT«True␤»
IOninja jnthn: ^ should that say True for **@ slurpy too?
Oh 15:30
bisectable6 IOninja, bisect log: gist.github.com/2b7b879406e3e849e2...96ada96552
IOninja, (2017-02-07) github.com/rakudo/rakudo/commit/51...31029fa1f0
IOninja m: -> +@a { @a.elems.say }(1…∞)
camelia rakudo-moar 1615c8: OUTPUT«Cannot .elems a lazy list␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: -> **@a { @a.elems.say }(1…∞)
camelia rakudo-moar 1615c8: OUTPUT«1␤»
IOninja it ends up with the list as first arg
well, Seq 15:31
jnthn Yeah, which is what **@foo is meant to do
15:31 itaipu joined
jnthn So I don't think it really would make sense 15:31
IOninja I misunderstood what it does
jnthn *nod*
It's a reasonable question to ask about *@foo though
IOninja But that kinda introduces inconsystency
jnthn How so? 15:32
IOninja m: (1…∞).flat.say; say flat 1…∞
camelia rakudo-moar 1615c8: OUTPUT«(...)␤(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 8…»
IOninja I mean in here ^
m: (1…∞).flat.is-lazy.say; say (flat 1…∞).is-lazy
camelia rakudo-moar 1615c8: OUTPUT«True␤False␤»
IOninja because sub flat uses **@
I guess not "that instroduces" but there is this inconsistency in flat() 15:33
jnthn Yeah, I think **@ is doing the right thing, and we might want to question flat
15:37 bwisti left 15:38 cdg joined 15:40 xtreak left
tony-o and just like that, a star is born - github.com/perl6/perl6-http-server-async 15:44
15:44 Tonik joined 15:46 khw joined 15:49 pyrimidine joined
tony-o jnthn: did you see or know of a way to check if the socket is closed or closing? 15:55
15:55 abraxxa left
IOninja m: say -5 % -2 15:55
camelia rakudo-moar 1615c8: OUTPUT«-1␤»
IOninja What does it mean that remainder is negative?
m: say -5 div -2 15:56
camelia rakudo-moar 1615c8: OUTPUT«2␤»
IOninja m: say -5 - (-2*2)
camelia rakudo-moar 1615c8: OUTPUT«-1␤»
IOninja Ah, ok
15:59 jdmmmmm joined
jnthn tony-o: Well, I saw how to ask libuv, 'cus that's what the fix I did today uses. There's not a way to do it from Perl 6 space; only tracking if the Supply of incoming data fired its done event can reliably do that at the moment. 15:59
15:59 wamba left
jnthn tony-o: Thing is, to ask we need to marshall the operation over to the eventloop thread from whatever we're on when asking 16:00
So it ends up being an async operation to ask
16:00 eroux left
jnthn Trying to write zero bytes and seeing if that fails is another way 16:00
(And will end up being as cheap as actually asking. In fact, if you wanted a method for "is it closed" today, I'd probably just implement the method in terms of a zero-byte write. :) 16:02
tony-o interesting - that'll save me from what i'm doing right now :-) 16:05
16:09 cdg_ joined
ilmari the behaviour of writing zero bytes to a non-regular file is explicitly unspecified by POSIX 16:09
and even for regular files it is permitted to just return zero with no error detection 16:10
16:12 cdg left, telex left 16:13 telex joined 16:24 ilogger2 joined, ChanServ sets mode: +v ilogger2 16:26 chuli joined
tony-o jnthn: that did the trick eh, no more force closings on calling .close 16:28
16:28 chuli left 16:36 smls joined
Geth ecosystem: 497bdcadb6 | (Tony O'Dell)++ | META.list
Update H:S:A and H:S entries to reflect becoming a part of git:perl6
16:36
16:44 cdg joined 16:46 smls left, smls joined 16:47 smls left 16:48 nicq20 joined
nicq20 tony-o: Hello! Just got your message over Github. I grabbed the repo with Git and it seems to work (zef still only finds 0.1.3). I'll try messing with it more. 16:50
16:52 kaare__ joined 17:09 cpage joined 17:10 wamba joined 17:11 cpage_ joined, nicq20 left 17:23 mrdside joined
mrdside hi! 17:23
17:23 itaipu joined
mrdside Dynamic variable $*ARGS not found 17:24
moritz quick, go looking for it! 17:25
Geth specs: 2c8786a52e | (Zoffix Znet)++ | v6d.pod
Add 6.d for IEEE num division

   Use IEEE 754-2008 semantics for num/Num infix:</>, infix:<%>, and infix:<%%>
perlpilot mrdside: good point. It's LTA that it doesn't say "...did you mean @*ARGS?"
ugexe they took our $*ARGS
yoleaux 7 Feb 2017 21:13Z <IOninja> ugexe: what's the url of zef's package list (or does it use same as panda)? how often does it get updated?
IOninja mrdside: it's @*ARGS
moritz perlpilot: I don't even know if we can get a list of all dynamic variables in scope 17:26
m: say DYNAMIC::.keys
camelia rakudo-moar 1615c8: OUTPUT«($=pod !UNIT_MARKER EXPORT $_ $! ::?PACKAGE GLOBALish $¢ $=finish $/ $?PACKAGE)␤»
moritz m: say GLOBAL::.keys
camelia rakudo-moar 1615c8: OUTPUT«()␤»
moritz neither of those lists @*ARGS, so I wouldn't even know where to find the list of possible dynamic variables
perlpilot surely there's a way
maybe I just expect too much from Perl these days (I've been spoiled by awesomeness :-) 17:27
moritz I'm not saying it can't be done, just that I don't know if it can be done 17:29
perlpilot Yeah, I just kind of assumed it could.
timotimo worst case we write a moarvm op that gives you a list of all dynamic variable names 17:30
otherwise you can probably go via callframe already? 17:31
m: my $*foobar; say callframe(0).^methods 17:32
camelia rakudo-moar 1615c8: OUTPUT«(new line file code callframe gist level annotations my)␤»
timotimo m: my $*foobar; say callframe(0).callframe.^methods
camelia rakudo-moar 1615c8: OUTPUT«Callframe.callframe not yet implemented. Sorry. ␤ in block <unit> at <tmp> line 1␤␤»
timotimo huh
m: my $*foobar; say callframe(0).^methods(:all)
camelia rakudo-moar 1615c8: OUTPUT«(new line file code callframe gist level annotations my iterator Method+{<anon|67959904>}.new Method+{<anon|67959904>}.new Method+{<anon|67959904>}.new Method+{<anon|67959904>}.new Method+{<anon|67959904>}.new Method+{<anon|67959904>}.new ACCEPTS Method+{<…»
ugexe the comedy option could be something like my @dynamic = grep { try $*$_ } permutations(permutations(A..Z) xx 10)
timotimo :D
why only up to 10?
also, there can also be other letters in there
a big portion of unicode :)
mrdside I have array of hashes. When iterate my array i compare $people<id> == @data[3]. Both values of Str, but get error "Cannot convert string to number: trailing characters after number in '3231271⏏В012РВ5' (indicated by ⏏)" 17:33
timotimo mrdside: if you want to numify a string, it has to end where the number ends
i suggest using .words on that string
or perhaps $people<id> is already a list anyway?
IOninja list?
mrdside i need @data[3] as word 17:34
as string
IOninja mrdside: strings are compared with `eq` operator
mrdside thx
timotimo ooooh
ugexe it looks like he has a key/value mashed together
timotimo i thought you wanted the number because that id starts with a number :)
tony-o .tell nicq20 you may have to do zef update -
yoleaux tony-o: I'll pass your message to nicq20.
mrdside red, but perl6 have so mane operarors ))
IOninja mrdside: I think you can use ~~ smartmatch operators in many cases where you're unsure :)
m: say 'x' ~~ 42 17:35
camelia rakudo-moar 1615c8: OUTPUT«False␤»
timotimo tony-o: btw, what's the todo list for H::S::A look like? there's been yet more stability improvements in rakudo in the recent months and i hvaen't tested the module in a long time
(doesn't help that i don't have an actual project)
17:36 eroux joined
mrdside "if $cr-month<month> == %month<month> { $cr-month<no1> += %month<no1>; ... }" got an error "Type Array does not support associative indexing." 17:36
perlpilot mrdside: $cr-month is not a hash, but an array then 17:37
mrdside if $cr-month<month> == %month<month>
it's a hash (an array element)
IOninja mrdside: what's $cr-month? 17:38
perlpilot mrdside: sure ... prove it :-)
mrdside for %person<credited> -> $cr-month {
perlpilot mrdside: could you put the whole code on a gist?
mrdside credited => []
ok. how?
IOninja mrdside: copy paste it here: gist.github.com/ 17:39
perlpilot go to gist.github.com and paste the code in
IOninja Click button. Give us URL
17:39 aindilis joined
timotimo lick button. receive bacon. 17:39
perlpilot mrdside: were you in DrForr's class at FOSDEM? 17:40
mrdside gist.github.com/mrDSide/8fefd834ef...4f1a22d7d7
IOninja must.... resist... urge.... 17:41
m: my %h; %h<foo bar ber bor> = "FOO=BAR=BER=BOR".split: "="; dd %h 17:42
camelia rakudo-moar 1615c8: OUTPUT«Hash %h = {:bar("BAR"), :ber("BER"), :bor("BOR"), :foo("FOO")}␤»
IOninja mrdside: ^ you can split directly into a hash slice instead of doing that stuff with @data and indexes that make the code pretty unreadable and error prone 17:43
17:43 sufrostico joined, juan__ joined
IOninja mrdside: what's in result.txt? 17:44
mrdside IOninja: i need sum data
IOninja mrdside: or rather what's the input data? 17:45
mrdside IOninja: it will be resulting file
IOninja Like to run it
timotimo the question is what is the file you put on the commandline
look closely, zoffix, it uses $fh from args, and $fh-result is result.txt 17:46
mrdside <ПУ-3=И=111111111=1111111B006PB6=SAD=dsf=df=01= = =4228,75=0=42,29=1184,05=253,72=42,29=1437,77=12=2=07/02/2017= =2016=adsfasdf, asdfasdf=
НЧСЛ=1=0=0=0=0=0=0=0=1=28=6= =
...
СТАЖ=01/07/2016=11/10/2016= =ВЗНОСЫВРЕМ= = =
next of "<ПУ-3=И=111111111=1111111B006PB6=SAD=dsf=df=01= = =4228,75=0=42,29=1184,05=253,72=42,29=1437,77=12=2=07/02/2017= =2016=adsfasdf, asdfasdf="
IOninja mrdside: this confusing. Can you paste it into the pastebin like with the code? 17:47
timotimo you can click "edit" at the top right and then "add another file" at the bottom left
17:48 robertle joined
mrdside yes 17:48
gist&
gist?
timotimo yes 17:49
perlpilot mrdside: btw, $cr-month is an array in your code. You need to say for %person<credited>.list -> $cr-month { } or for @(%person<credited>) -> $cr-month { } 17:50
TimToady %person<credited>[] should work too 17:51
perlpilot yeah, that too
timotimo [] is just like postfix-dereferencing!
only not as ugly
mrdside gist.github.com/mrDSide/53ecaeed84...655026a3bf
perlpilot timotimo :-)
TimToady
.oO(The Zen of Postfix Maintenance)
17:52
mrdside perlpilot: thx, it works 17:53
IOninja \o/
perlpilot TimToady: Any idea of a good place to point someone to explain why the extra syntax is needed there? I thought about design.perl6.org/S07.html#The_sing...ument_rule but I didn't find it clear for this case
mrdside now i need "1200" += "12,56"
sena_kun mrdside, in case you speak Russian(as I can guess from your test file) I can try to help you with it. It seems you need a grammar to parse your file and somehow process the result. 17:54
mrdside yes and yes
sena_kun Or, rather, in case if Russian is your native.
mrdside yes
IOninja >:} 17:55
sena_kun mrdside, perhaps private channel will be better choice then, I'll pm you now.
TimToady perlpilot: not really, but arrays and hashes should document that they're composed of Scalar containers, and those should somehow be known not to expand in a list
I'd tend to explain it in terms of singular vs plural nouns
IOninja m: say +"12,56"
camelia rakudo-moar 1615c8: OUTPUT«Cannot convert string to number: trailing characters after number in '0312⏏5,56' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
IOninja mrdside: you'd need to replace the commas with '.' and '.' with commas, I guess. We don't do Russian style numbers in core :| 17:56
kinda just hit me that our system makes no sense in some languages. 17:57
TimToady
.oO(some languages make no sense in our system...)
IOninja :D
timotimo they are also german-style 17:58
TimToady I think of them as generally european 17:59
though sometimes spaces are used too
IOninja m: multi val(Str $x) is default { $x.subst(",", "."); callwith $x }; dd val "42,56"
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
TimToady there's just no way to parse them unambigously, though, at least without knowing somehow that one is coming 18:00
IOninja m: multi val(Str $x) is default { callwith $x.subst(",", ".") }; dd val "42,56"
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
IOninja :(
It's probably not too-paintful to augment Str.Numeric and <...> to recognize numerals from different locales 18:01
IOninja wishes we had "lexical" augmentations...
timotimo well, multi candidates are still lexical 18:02
IOninja yeah, but Str.Numeric won't see them (the multi candidates of, say, val())
timotimo right
TimToady m: multi sub val(Str $x where /\,/) { nextwith $x.subst(",", ".") }; dd val "42,56" 18:03
camelia rakudo-moar 1615c8: OUTPUT«RatStr.new(42.56, "42.56")␤»
TimToady though now the Str is a lie :) 18:04
IOninja hehe
m: multi val(Str:D $x) is default { callwith $x.subst(",", ".") }; dd val "42,56"
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
timotimo interesting that "is default" didn't help here
TimToady is a bit surprised the earlier didn't die of an ambiguous dispatch
IOninja why does this one not work?
TimToady oh, you have 'is default'
IOninja m: multi val(Str:D $x, :$val-or-fail) is default { callwith $x.subst(",", ".") }; dd val "42,56" 18:05
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
IOninja wweird
m: multi val(Str:D $x, :$val-or-fail) { callwith $x.subst(",", ".") }; dd val "42,56"
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
IOninja :|
m: .say for &val.candidates».signature[*-1] 18:06
camelia rakudo-moar 1615c8: OUTPUT«(Str:D $MAYBEVAL, :$val-or-fail)␤»
IOninja I'm guessing it doesn't go through Str:D candidate but through something else 18:07
TimToady so why isn't that an amiguous dispatch? 18:08
IOninja 'cause that gets thrown only when dispatching
TimToady m: multi sub val(Str:D $x, :$val-or-fail) { nextwith $x.subst(",", ".") }; dd val "42,56"
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
IOninja m: multi foo () {}; multi foo () {}; multi foo (Int) {}; foo 42 18:09
camelia ( no output )
IOninja ^ no throwage
m: multi foo () {}; multi foo () {}; multi foo (Int) {}; foo()
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:()␤:()␤ in block <unit> at <tmp> line 1␤␤»
IOninja ^ throwage
So I'm thinking it doesn't get to Str:D and some other candidate grabs it
TimToady what could be more specific than Str:D ?
I made it mine more specific with a 'where' 18:10
s/it//
IOninja dunno... Just tried making multies with the same signatures as all other candidates and it still didn't throw :S
TimToady well, ss/it //
IOninja s: &val 18:11
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/1615...hs.pm#L104
IOninja s: &val, \('42,55')
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/1615...hs.pm#L131
IOninja weird
TimToady something's rotten in the state of dispatch 18:12
IOninja yeah
m: multi sub chars(Str:D $x) { die 'meow' }; say chars 'meows'
camelia rakudo-moar 1615c8: OUTPUT«5␤»
IOninja m: multi sub chars(Str:D $x) { die 'meow' }; &chars.candidates».signature.say 18:13
camelia rakudo-moar 1615c8: OUTPUT«((Cool $x) (Str:D $x) (str $x --> int) (Str:D $x))␤»
TimToady jnthn: ^^^ ??? !!! ...
timotimo we haven't actually got ^^^
IOninja and according to bisectable it's been this way since at least The Christmas :S 18:14
m: multi sub chars(str $x --> int) { die 'meow' }; say chars my str $ = 'meows' 18:15
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'chars'; these signatures all match:␤:(str $x --> int)␤:(str $x --> int)␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: multi sub chars(Cool $x) { die 'meow' }; say chars 'meows'.IO
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'chars'; these signatures all match:␤:(Cool $x)␤:(Cool $x)␤ in block <unit> at <tmp> line 1␤␤»
IOninja so just Str:D affected?
TimToady m: multi sub val(str $x, :$val-or-fail) { nextwith $x.subst(",", ".") }; dd val "42,56"
camelia rakudo-moar 1615c8: OUTPUT«"42,56"␤»
18:16 AlexDaniel joined
IOninja m: multi sub val(str $x, :$val-or-fail) { nextwith $x.subst(",", ".") }; dd val my str $ = '42,56' 18:16
camelia rakudo-moar 1615c8: OUTPUT«RatStr.new(42.56, "42.56")␤»
timotimo oh, native string
well, that's a thing that's tighter than Str:D
IOninja well, chars has three sigs and only two of them cry about ambiguous dispatch :/ 18:17
s/sigs/candidates/
m: multi sub chars(Str:D $x) { die 'meow' }; &chars.cando(\("42"))».signature.say 18:18
camelia rakudo-moar 1615c8: OUTPUT«((Str:D $x) (Str:D $x) (Cool $x))␤»
TimToady that definitely seems wrongoidal 18:19
oh wait...
I think I know
:D is considered a constraint, so they're done in declaration order 18:20
though...that doesn't explain why my 'where' worked
m: multi sub chars(Str:D $x where *.chars) { die 'meow' }; &chars.cando(\("42"))».signature.say 18:21
camelia rakudo-moar 1615c8: OUTPUT«((Str:D $x where { ... }) (Str:D $x) (Cool $x))␤»
IOninja m: multi foo (Str:D $x) {die 'one'}; multi foo (Str:D $x) {die 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(Str:D $x)␤:(Str:D $x)␤ in block <unit> at <tmp> line 1␤␤»
TimToady well, it's considering where to be more constrained than :D, at least, if :D is considered a constraint at all 18:22
IOninja m: multi sub comb(Str $x, $, $?) { die 'meow' }; say comb 'meows'
camelia rakudo-moar 1615c8: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Calling comb(Str) will never work with proto signature ($, $, $?)␤at <tmp>:1␤------> 3comb(Str $x, $, $?) { die 'meow' }; say 7⏏5comb 'meows'␤»
TimToady which it doesn't seem to be
IOninja m: multi sub comb(Str $x, Str $, $?) { die 'meow' }; say comb 'meows', 'foo' 18:23
camelia rakudo-moar 1615c8: OUTPUT«meow␤ in sub comb at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: multi sub comb(Str $x, Cool $, $?) { die 'meow' }; say comb 'meows', 'foo'
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'comb'; these signatures all match:␤:(Str $matcher, Cool $input, $limit = *)␤:(Str $x, Cool $, $?)␤ in block <unit> at <tmp> line 1␤␤»
TimToady so my theory is wrong
IOninja The :D seems to be definitely the part of it tho
TimToady so does lexical level, apparently
IOninja m: multi sub uniname(Int:D $code) { die 'meows' }; uniname 42
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'uniname'; these signatures all match:␤:(Int:D $code)␤:(Int:D $code)␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: multi sub uniname(Str:D $code) { die 'meows' }; uniname '42' 18:24
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'uniname'; these signatures all match:␤:(Str:D $str)␤:(Str:D $code)␤ in block <unit> at <tmp> line 1␤␤»
IOninja huh
works fine here, weird.
TimToady scratches head, wishes for more coffee, realizes he can grant his wish...
IOninja m: multi foo (Str:D $x, :$whatevs) {die 'one'}; multi foo (Str:D $x) {die 'two'}; foo '42' 18:25
camelia rakudo-moar 1615c8: OUTPUT«one␤ in sub foo at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: multi foo (Str:D $x, :$whatevs) {die 'one'}; multi foo (Str:D $x, :$whatevs) {die 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«one␤ in sub foo at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja So adding named args makes it unambiguious
IOninja shrugs and grabs a coffee too 18:26
TimToady apparently "could have a named argument that we don't even pass" is considered a constraint to flip to the ordered regime 18:28
[Coke] drinks his ramen out of a 1 litre glass container.
IOninja m: &chars.candidates».signature.say 18:29
camelia rakudo-moar 1615c8: OUTPUT«((Cool $x) (Str:D $x) (str $x --> int))␤»
Geth perl6.org: ca4e1a13dd | Cale++ | source/resources/index.html
Add kyclark's Metagenomics book

It's actually a fantastic resource for learning P6, even if you have no interest in the field.
18:30
IOninja Doesn't answer why the multi sub chars(Str:D $x) aboive didn't get ambiguous
18:30 pyrimidine joined
IOninja m: multi foo (Str:D $x --> Nil) {die 'one'}; multi foo (Str:D $x --> Nil) {die 'two'}; foo '42' 18:30
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(Str:D $x --> Nil)␤:(Str:D $x --> Nil)␤ in block <unit> at <tmp> line 1␤␤»
TimToady m: multi foo (Str:D $x --> Nil) {die 'one'}; do { multi foo (Str:D $x --> Nil) {die 'two'}; foo '42' } 18:32
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(Str:D $x --> Nil)␤:(Str:D $x --> Nil)␤ in block <unit> at <tmp> line 1␤␤»
TimToady so not just any lexical scope
IOninja m: multi foo (Str:D $x) {die 'one'}; multi foo (str $x --> int) { 42 }; multi foo (Str:D $x) {die 'two'}; foo '42' 18:33
camelia ( no output )
IOninja m: multi foo (Str:D $x) {die 'one'}; multi foo (str $x --> int) { die 42 }; multi foo (Str:D $x) {die 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(Str:D $x)␤:(Str:D $x)␤ in block <unit> at <tmp> line 1␤␤»
IOninja My spidey senses sense optimizer shinanigans
TimToady wonders if there's a SETTING:: bypass in place here to make sure implicit val() works "right"
there is a SETTING_CACHE mentioned in the optimizer 18:35
IOninja well, my last evals with str $x --> int do indeed produce different results with optimizer off, but the original thing is still present 18:36
18:37 juan__ left
TimToady iirc, there are some places in Actions or so that bypass the current lexical scope, and val might be one of them 18:37
though you'd think it would only be for implicit forms like <1/3>
maybe it's accidentally applied to explicit calls as well
IOninja Oh wait, the named arg disambiguating is still there, but the multi chars (Str:D $x) {} does start to complain about ambiguity with optimzier off 18:38
TimToady ooh
a veritable klew
so we need to invalidate that cache entry for added candidates 18:39
tony-o timotimo: to-do list for H:S:A right now involves speeding up the socket closing - i think i had it working and reconfigured it to avoid segfault/crashes and now it doesn't close the sockets right away 18:40
after that i think it's just performance, someone found a bug where it wouldn't handle multiline headers properly but that should be resolved -
[Coke] wonders if you can get pod2html "lite" that doesn't add in a bunch of css 18:49
IOninja the Perl 6 pod2html? I vaguelly recall it lets you specify your own CSS 18:50
18:54 sufrostico left 18:58 espadrine joined 19:00 nerow joined
[Coke] looks like it has some hardcode.d 19:00
[Coke] doublechecks
Geth perl6.org: c4e4f73dba | (Zoffix Znet)++ | 4 files
s/panda/zef/;

Fixes #74
  - On some pages that listed both zef and panda, I removed panda
   to avoid confusion on why have two module managers (I think that's OK?)
  - <tt> is deprecated; swapped to <code>
19:05
[Coke] IOninja: github.com/perl6/Pod-To-HTML/blob/...ML.pm#L156 - looks like the prelude goes in regardless. 19:06
IOninja oh, and added ref to <a href="metacpan.org/">Perl 5 Modules</a>; I figured at least right now it'd be pretty common to rely on Perl 5 for stuff not in our eco
IOninja giggles at that style sheet 19:07
oh, they brought back the <u> in HTML5 heh, OK then 19:08
"stop using presentational mark up! STOP DAMMIT! Ok fine, you all win! use it!"
19:08 cdg left
IOninja Well, if I were writing it, I'd not include any CSS; and wouldn't include a mile of comments explaining all the details. 19:10
[Coke] Yah. I think all that can go. 19:11
or maybe make it a :boilerplate-css option.
IOninja And we use that on our docs site too...
m: gist.github.com/zoffixznet/0ad09a2...cf15e43d7a 19:12
camelia rakudo-moar 1615c8: OUTPUT«Potential difficulties:␤ Asked to remove 2 spaces, but the shortest indent is 0 spaces␤ at <tmp>:20␤ ------> 3 ♥7⏏5<EOL>␤587␤»
IOninja and every page has half a kilobyte of stuff it needn't have
19:12 eroux left 19:24 thdr|2 joined
[Coke] IOninja: I'm digging here as part of the "move to bootstrap" ticket. 19:24
IOninja cool
[Coke] "oh I'll just ... oh. what is that doing there." 19:26
19:27 labster joined
geekosaur "sounds like css" :p 19:28
19:29 ocbtec joined
jnthn TimToady: I suspect some of the shenanigans above are because a literal can be either native or boxed, and while for Int literals we're very careful about magnitude, for Num/num and Str/str we prefer the native candidate 19:39
19:39 girafe joined
jnthn (And the decision making on that lives in the optimizer pass) 19:40
IOninja m: multi foo (Str:D, :$foo) { say "one" }; multi foo (Str:D) { say "two" }; foo "foo"
camelia rakudo-moar 1615c8: OUTPUT«one␤»
IOninja m: multi foo (Str:D) { say "one" }; multi foo (Str:D, :$foo) { say "two" }; foo "foo"
camelia rakudo-moar 1615c8: OUTPUT«two␤»
IOninja Is that normal?
the optional named arg we don't pass breaks the tie 19:41
Oh, I even ticketed that before: rt.perl.org/Ticket/Display.html?id...et-history
jnthn Yes, the presence of named params makes it narrower 19:46
They act as constraints
And when they're optional they always match
IOninja OK. I'll close the ticket 19:47
gfldex takes notes 19:48
19:52 TEttinger joined 19:54 kyan joined 19:55 pyrimidine left, pyrimidine joined 20:00 pyrimidine left 20:04 Coleoid_n joined, TEttinger left 20:05 andrzejku joined 20:11 TEttinger joined 20:13 notostraca joined 20:15 TEttinger left 20:16 labster left
Coleoid_n Hi, #perl6! 20:23
I understand I can put parameters on my rules. Is there a means to pass these on to my action methods?
20:23 baest joined
IOninja I think common way is to use dynamic varaibles? 20:24
parameters...
IOninja shrugs
jnthn token foo($*bar) { } then you can access $*bar in the action method 20:25
IOninja ah
m: grammar { token TOP { <foo: 42> }; token foo ($*x) { .+ } }.parse: "foo", :actions(class { method foo ($/) { dd $*x } }) 20:26
camelia rakudo-moar 1615c8: OUTPUT«Int $*x = 42␤»
gfldex m: sub f($*foo){ dd $*foo }; f 42 20:27
camelia rakudo-moar 1615c8: OUTPUT«Int $*foo = 42␤»
jnthn Yeah, it's something all sigs can do, not just regexen :)
IOninja m: sub ($?x) { say $?x }(42)
camelia rakudo-moar 1615c8: OUTPUT«5===SORRY!5===␤In signature parameter $?x, it is illegal to use the ? twigil␤at <tmp>:1␤------> 3sub ($?x7⏏5) { say $?x }(42)␤Variable '$?x' is not declared␤at <tmp>:1␤------> 3sub ($?x) { say 7⏏5$?x }(42)␤␤»
IOninja uh-oh, illegal?
IOninja runs away
Coleoid_n :D 20:28
gfldex m: my $a = 42; sub f($*foo is rw){ dd ++$*foo }; f $a; dd $a; 20:30
camelia rakudo-moar 1615c8: OUTPUT«43␤Int $a = 43␤»
gfldex m: my $a = 42; sub f($*foo is copy){ dd ++$*foo }; f $a; dd $a;
camelia rakudo-moar 1615c8: OUTPUT«43␤Int $a = 42␤»
gfldex so a dynamic var in a sig is kind of a NOP
IOninja nop? 20:32
gfldex m: my $a = 42; sub f($*foo){ g $*foo }; sub g($*foo is rw){ $*foo++ }; f $a; dd $a;
camelia rakudo-moar 1615c8: OUTPUT«Parameter '$*foo' expected a writable container, but got Int value␤ in sub g at <tmp> line 1␤ in sub f at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
Coleoid_n I can do that, thanks! But to guard against the XY problem, my actual problem is: 20:33
gfldex IOninja: no-operation
Coleoid_n I'm working on a grammar which needs to represent the "same thing" differently, depending on the outer rule it's in the process of matching.
Or rather, the actions class should emit somewhat different code.
IOninja gfldex: but what do you mean? Looks like it assigns the given value to the dynamic var. Where's the NOP come in?
Coleoid_n Is there another approach that makes more sense? 20:34
gfldex IOninja: with 'kind of NOP' i meant that having it as a dynamic var doesn't really change anything
IOninja m: grammar { token TOP { :my $*FORMAT; <foo> || <bar> }; token foo { {$*FORMAT = "foo"} \d+ }; token bar { {$*FORMAT = "bar"} .+ } }.parse: "aa", :actions(class { method TOP ($/) { dd $*FORMAT } }) 20:36
camelia rakudo-moar 1615c8: OUTPUT«Str $*FORMAT = "bar"␤»
IOninja m: grammar { token TOP { :my $*FORMAT; <foo> || <bar> }; token foo { {$*FORMAT = "foo"} \d+ }; token bar { {$*FORMAT = "bar"} .+ } }.parse: "42", :actions(class { method TOP ($/) { dd $*FORMAT } })
camelia rakudo-moar 1615c8: OUTPUT«Str $*FORMAT = "foo"␤»
IOninja Coleoid_n: that ^ maybe? If I understood you right.
You declare the dynamic var in your outer rules and in your subrules you can assign stuff to it 20:37
or put another way: your outer rule can set that var and your subrules will know the value 20:39
Coleoid_n IOninja: I'm wanting the value to reach my actions methods, which you did above a bit. 20:40
IOninja m: grammar { token TOP { :my $*FORMAT = rand > .5; <foo> }; token foo { .+ } }.parse("aa", :actions(class { method foo ($/) { make $*FORMAT ?? "one thing" !! "the other" } })).<foo>.made.say
camelia rakudo-moar 1615c8: OUTPUT«one thing␤»
IOninja m: grammar { token TOP { :my $*FORMAT = rand > .5; <foo> }; token foo { .+ } }.parse("aa", :actions(class { method foo ($/) { make $*FORMAT ?? "one thing" !! "the other" } })).<foo>.made.say 20:41
camelia rakudo-moar 1615c8: OUTPUT«the other␤»
20:42 lostinfog joined
Coleoid_n That's was very cooperative of camelia... :D 20:42
*That
IOninja :) 20:43
20:43 El_Che joined 20:52 robertle left 20:54 _28_ria joined 21:01 lostinfog left 21:03 bjz joined 21:11 andrzejku left
TimToady and yes, it's also perfectly legal to declare a dynvar as part of a signature 21:14
21:15 wamba left
Coleoid_n IOninja++, the dynvar worked beautifully. Thanks also, jnthn and gfldex! 21:15
gfldex TimToady: is there any special behaviour expected from signature dynvars?
21:17 bjz left 21:19 ocbtec left, cdg joined
Geth doc: 26e0ec8558 | (Wenzel P. P. Peppmeyer)++ | doc/Language/functions.pod6
tell that optional parameters take part in MMD
21:25
doc: 0280529568 | (Wenzel P. P. Peppmeyer)++ | doc/Language/functions.pod6
link to arity
21:25 baest left 21:26 pyrimidine joined
IOninja gfldex: seems preference isn't gived for non-named args 21:27
m: multi foo (Str:D $x, :$) {say 'one'}; multi foo (Str:D $x) {say 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«one␤»
IOninja m: multi foo (Str:D $x, $) {say 'one'}; multi foo (Str:D $x) {say 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«two␤»
IOninja m: multi foo (Str:D $x, $?) {say 'one'}; multi foo (Str:D $x) {say 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«two␤»
IOninja m: multi foo (Str:D $x, $?) {say 'one'}; multi foo (Str:D $x, $?) {say 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(Str:D $x, $?)␤:(Str:D $x, $?)␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: multi foo (Str:D $x, $?, :$) {say 'one'}; multi foo (Str:D $x, $?) {say 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«one␤»
IOninja m: multi foo (Str:D $x) {say 'one'}; multi foo (Str:D $x, $?) {say 'two'}; foo '42'
camelia rakudo-moar 1615c8: OUTPUT«one␤»
gfldex m: multi foo (Str:D $x) {say 'one'}; multi foo (Str:D $x, $? = 1) {say 'two'}; foo '42' 21:28
camelia rakudo-moar 1615c8: OUTPUT«one␤»
gfldex i would call this one a bug
IOninja Why not the other one?
gfldex maybe
IOninja I'd actually expect ^ that behaviour for optional named args
if I ain't giving you the optional named param and there's candidate that doesn't take it, use it 21:29
jnthn tries to figure out what is being considered the bug :)
IOninja :D
jnthn An exact arity match candidate being preferred is, I believe, intended.
I think it wasn't that way and *that* was considered a bug ;)
gfldex it's ambiguous in my eyes
jnthn Every arity-based rule that's in the multi-dispatcher is the result of a persuasive example, or the unintended consequences of satisfying people's persuasive examples :-) 21:30
IOninja That makes sense to me. But what's the reasoning for giving preferences to one with named args?
jnthn Because named arguments count as a constraint 21:31
The multi-dispatcher doesn't consider names
*nameds
If there are any, it does its work based on positionals, and then just checks if the signatures will bind
Geth doc: ea919161ee | (Wenzel P. P. Peppmeyer)++ | doc/Language/functions.pod6
only for named params
jnthn And picks the first one where that's the case 21:32
gfldex jnthn: that sounds like an implementers standpoint 21:33
IOninja OK 21:34
21:35 geekosaur joined
jnthn gfldex: That would have been "here's the code" ;-) 21:35
That nameds aren't individually considered in the candidate sort has been in the design docs for years, though 21:37
The arity rules were actually harder than the type rules
Because people had all kinds of ideas of what they wanted.
21:38 nerow left
gfldex so it's the least wrong design :-> 21:38
21:39 _28_ria left
IOninja or most correct :) 21:39
21:40 AlexDaniel left 21:41 baest joined
jnthn If we were discussing this in a years's time I could claim to have spent a decade listening people asking for opposing things on the multi-dispatch arity rules. :P 21:41
*listening to
21:41 pyrimidine left 21:42 pyrimidine joined 21:43 _28_ria joined
TimToady has spent more than a decade :) 21:43
jnthn Congrats. ;-)
21:43 _28_ria left
IOninja hahaha 21:43
TimToady it's really just a special case of electoral systems, which are provably imperfect in some way or other 21:44
as we have reason to know... :/
jnthn There's been at least a couple of occasions where I looked at an example in a ticket, was sympathetic to it, tried the change, broke a spectest, and discovered another ticket that had wanted the opposite. :) 21:45
gfldex TimToady: that's just a sympthom
TimToady: in 1968 your country split in two without changing it's borders. It's actually astounding it didn't blew up earlier. 21:48
IOninja What happened in 1968? 21:49
gfldex the hippies realised that they can't change society so they started to build their own
TimToady gfldex: no, I'm specifically thinking of something more basic: en.wikipedia.org/wiki/Arrow's_impo...ty_theorem 21:50
gfldex IOninja: that happend in 1967, so it's not like they didn't try hard en.wikipedia.org/wiki/Flower_Power_(photograph)
TimToady gfldex: and your social analysis is, at best, a vast oversimplification :) 21:51
21:52 pyrimidi_ joined, pyrimidine left
gfldex my country is separate by a whole ocean so I take a fairly relaxed stance 21:52
TimToady but yes, polarization has been generally increasing since WW2
we have to work up to WW3 somehow or other... 21:53
gfldex peace is the time between two wars after all
perlpilot hopes we can elide WW3 forever 21:54
IOninja foresees it'll happen in the next 8 years 21:55
gfldex i hope we will be to busy solving all those nasty problems ahead to go to war
my guess is 2050ish because that's when the world will run low on phosphate fertilisers and yes, that's a focil resource too 21:57
IOninja Well, it's already happening, I guess. Bunch of sanctions, drones, and mass media manipulation. That's the warfare of 21st century. Why bomb anyone when you can ruin their economy by other means.
TimToady
.oO(or ruin your own economy...)
21:58
RabidGravy oh the uk is already on it 21:59
gfldex you can only ruin the economy of a country that can't supply it's ppl with food. That's why sanctions on russia are silly.
the UK can't feed it's ppl
TimToady is going to miss avocadoes 22:00
gfldex but maybe we need that shake up to come to senses
RabidGravy we're already missing courgettes :) 22:01
IOninja The alternative to sanctions on Russia is letting them do what they want or bombing them. Both are undesirable.
TimToady though Trump may have a point about vegemite... :)
gfldex because they actually can bomb back
TimToady just kidding, I like vegemite/marmite
jnthn Ewww, marmite
RabidGravy :) 22:02
TimToady well, not to eat it directly, of course
it's one of my secret ingredients in soup though
adds umami without tasting like soy 22:03
and surely jnthn is generally in favor of the activities of yeast :)
jnthn This is true. :-) 22:04
gfldex it's not just him. I like to bake my own bread.
jnthn I never thought of putting marmite in soup :P
I do stick soy in one soup I make though, so I guess it's not so strange :) 22:05
22:08 cdg_ joined 22:09 AlexDaniel joined
RabidGravy right, I have a fun visit to a warehouse tomorrow, see how the software breaks the real world :) 22:10
22:10 cdg left
TimToady
.oO(Sticks and stones may break my bones, but software is, er, soft...)
22:11
gfldex TimToady: may I remind you of electrek.co/2016/09/14/another-fat...n-dashcam/ 22:13
jnthn wanders off to get some rest... 'night 22:14
AlexDaniel u: ©ⓒ 22:16
unicodable6 AlexDaniel, U+00A9 COPYRIGHT SIGN [So] (©)
AlexDaniel, U+24D2 CIRCLED LATIN SMALL LETTER C [So] (ⓒ)
22:17 mrdside left 22:18 baest left 22:22 lostinfog joined 22:24 baest joined
[Coke] ⓅⒺⓇⓁ⑥ 22:26
tony-o gfldex: that tesla thing is kind of a mixed bag. 22:28
it only *needs* to be better than humans driving, which isn't fairly difficult
well - i mean the tech might be difficult but most people turn into monsters when they sit down in a car 22:29
IOninja I'm not surprised at that crash, looking at the dashcam footage. Plenty of humans would've crashed into that sweeper and I'm pretty sure it'd be illegal for it to drive like that here in Canukistan 22:35
Wonder what it's like to be the programmers for that thing. 22:40
"Bug report: Car didn't apply break. Driver dead." "Oh shit, off-by-one error right there!" 22:41
AlexDaniel oh wow, that crash 22:44
notostraca I think they showed that Tesla vehicles driving themselves still get into less crashes than when a human is
22:48 thdr|2 left 22:50 BenGoldberg joined
gfldex tony-o: that though is a slippery slope because if you take it to the extreme it ends up with humans confined to quarters 23:00
but then most humans do that already. They call it "watching TV"
23:02 pyrimidi_ left 23:05 sufrostico joined 23:09 abruanese joined, espadrine left 23:13 agentzh joined 23:14 avalenn joined 23:17 gdonald joined 23:30 cpage_ left 23:32 DarthGandalf joined 23:33 zoosha left, zoosha joined 23:34 lep-delete joined
tony-o gfldex++ 23:42
23:43 lostinfog left, yqt joined
Geth doc: cf758229a7 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod6
tell that Signature is cool with dynamic variables
23:44
23:45 jeffythedragonsl joined
gfldex i wonder what it tells about me that I maintain two distinct karma pools 23:45
23:46 girafe left 23:51 jeffythedragonsl left 23:56 labster joined 23:59 pyrimidine joined