»ö« 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.
jeffythedragonsl hey 00:30
naxieAlDle hello!
jeffythedragonsl windows 10 killed my linux bootloader but I'm back up to speed now, trying some more perl6 stuff
naxieAlDle \o/ 00:34
jeffythedragonsl I'm looking at github.com/MoarVM/MoarVM/issues/549, can't reproduce it 00:37
MasterDuke m: say expmod(1, -1, 1) 00:38
camelia 0
MasterDuke m: say expmod(3, -1, 3)
camelia (timeout) 00:39
MasterDuke m: say expmod(3, -1, 1)
camelia 0
jeffythedragonsl ok, but (1, -1, 1) doesn't timeout
MasterDuke i think it was fixed for the case of the third parameter == 1
dogbert17 has some comments about it over in #moarvm 00:40
jeffythedragonsl it's implemented in rakudo/src/core/Int.pm? 00:41
MasterDuke i believe the problem is actually in the 3rd party math lib we use 00:41
libtommath
MasterDuke MoarVM/3rdparty/libtommath 00:42
MasterDuke jeffythedragonsl: you know about the web site with logs of the channels? 00:44
jeffythedragonsl yeah
MasterDuke irclog.perlgeek.de/moarvm/2017-03-11 has the comments i was thinking of 00:45
jeffythedragonsl hmm 00:46
jeffythedragonsl why use gdb for python instead of pdb? 00:47
samcv j: 'st'.fc.say 00:48
camelia
MasterDuke jeffythedragonsl: i think it's the other way around? using some python script in gdb 00:52
jeffythedragonsl I git cloned moarvm and there's no code in MoarVM/3rdparth/libtomath 00:54
MasterDuke it got turned into a submodule, so i think you have to `perl Configure.pl` and that will clone it 00:55
jeffythedragonsl ok 00:56
all I see that looks anything like that is in src/math/bigintops.c theres MVM_bigint_expmod
MasterDuke yeah, looks like it pretty much just calls mp_exptmod 00:58
MasterDuke 3rdparty/libtommath/bn_mp_exptmod.c:24: 01:00
jeffythedragonsl so it's going into infinite recursion with no stack overflow?
MasterDuke could be, i haven't looked at it at all, just noticed it was being talked about 01:03
jeffythedragonsl I'm thinking github.com/perl6/nqp/issues/332 might be easier since it's all in MoarVM 01:14
I can reproduce it now
jeffythedragonsl anyone have any idea where the code for || is? 01:27
MasterDuke you could try doing `--target=ast` and see what it gives 01:29
MasterDuke e.g., perl6 --target=ast -e 'your code here' 01:30
jeffythedragonsl I guess it's called something like infix:<||> 01:33
MasterDuke probably 01:34
Geth whateverable: fcf6ae0542 | (Aleks-Daniel Jakimenko-Aleksejev)++ | t/committable.t
Test very old tags

Adds tests for issue #30.
2014.01 is the oldest release of Rakudo on MoarVM, currently we do not provide anything older than that.
01:35
IOninja points out the bug is in nqp, so doing `perl6 --...` is a bit far from home. 01:36
MasterDuke heh, whoops. `nqp --target=ast -e 'your code here'` 01:37
jeffythedragonsl ok, it's QAST::Op(unless &infix:<||>) || 01:38
if you put 4 || 200 in it evaluates to 4, only if you use a variable it's zero 01:39
MasterDuke might try saving off the asts for each version and diffing them, might give you a place to look 01:41
and making the variable an int also give 4
IOninja nqp: my $v := 42; my int $x := nqp::unless($v, 5); say($x) 01:42
camelia 0
IOninja nqp: my $v := ''; my int $x := nqp::if($v, 5); say($x) 01:43
camelia 0
IOninja nqp: my $v := ''; my $x := nqp::if($v, 5); say($x) 01:44
camelia
IOninja nqp: my $v := ''; my num $x := nqp::if($v, 5); say($x) 01:45
camelia 0
jeffythedragonsl $ nqp --target=ast -e "my $bar := 4; my int $foo2 := $bar || 200;"
Confused at line 2, near "my int :="
at gen/moar/stage2/NQPHLL.nqp:765 (/home/jpl/.rakudobrew/moar-nom/install/share/nqp/lib/NQPHLL.moarvm:panic)
MasterDuke might try disabling spesh or the jit
MasterDuke can't use " for the outermost quote, the shell uses them 01:46
jeffythedragonsl single quotes work 01:47
jeffythedragonsl diff of the two versions 01:51
$ diff foo foo2
40c40
< - QAST::Stmts my $bar := 4; my int $foo := $bar || 200;
---
> - QAST::Stmts my $bar := 4; my int $foo := 4 || 200;
46c46
< - QAST::Op(bind) :var_initialized<?> int $foo := $bar || 200
---
> - QAST::Op(bind) :var_initialized<?> int $foo := 4 || 200
49c49
< - QAST::Var(lexical $bar)
---
> - QAST::IVal(4)
don't see how that really helps me though
:q
IOninja jeffythedragonsl: FWIW we have #perl6-dev
jeffythedragonsl ok :) 01:52
Geth whateverable: a96dec07a5 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 2 files
Make sure huge STDIN is not replied back fully

Adds some tests for issue #34.
Interestingly, we only test stdin features for committable and
  evalable even though *all* bots support it equally. Perhaps it's time
to create a separate file for common tests.
02:12
ZzZombo Is there a way to do this in just one assigment? 02:23
m: 'a b c' ~~ /(\w)\s(\w)\s(\w)/;say my ($x,$y,$z)=$0,$1,$2
camelia (「a」 「b」 「c」)
MasterDuke m: my ($x,$y,$z) = |("a b c" ~~ /(\w)\s(\w)\s(\w)/); say $x; say $y; say $z 02:26
camelia 「a」
「b」
「c」
ZzZombo thanks, very good. 02:27
MasterDuke np
naxieAlDle m: "a b c" ~~ /$<x>=\w\s$<y>=\w\s$<z>=\w/; say $<x>; say $<y>; say $<z> 03:15
camelia 「a」
「b」
「c」
naxieAlDle too late… :)
IOninja m: my ($x,$y,$z) = 'a b c'.words; dd [ $x, $y, $z ] 03:20
camelia ["a", "b", "c"]
IOninja nqp doesn't have multies, does it? 03:41
Geth whateverable: d6c1f87205 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 5 files
Tests malformed links

Adds tests for issue #103.
Again, these should probably be separated into a file with common tests. The commands are slightly different for each bot, but that's not a big problem.
03:43
Geth whateverable: 73e51c7e8d | (Aleks-Daniel Jakimenko-Aleksejev)++ | 2 files
Make sure we have some sane characters in stdin

Adds tests for issue #83.
03:58
ZzZombo Is this expected to behave this way? 04:06
m: grammar A {token TOP { (<ws>+ || <alnum>+ || <cntrl>+ || .)* } };class B { method TOP($/) { say $/ }};say A.parse(' founded the Evidenzbureau in 1850 as the ',:actions(B));
camelia (timeout)
IOninja m: my num:D $ = 42e0; 04:08
camelia Type check failed in assignment; expected num:D but got Num (42e0)
in block <unit> at <tmp> line 1
IOninja m: my num $ = 42e0;
camelia ( no output )
IOninja m: my int:D $ = 42; 04:09
camelia Type check failed in assignment; expected int:D but got Int (42)
in block <unit> at <tmp> line 1
IOninja m: multi foo (Int:D $x) {say "here"}; multi foo (int:D $x) { say "there" }; foo my int $x = 42 04:10
camelia there
IOninja m: my int:D $ = my int $x = 42
camelia Type check failed in assignment; expected int:D but got Int (42)
in block <unit> at <tmp> line 1
naxieAlDle m: grammar A {token TOP { <ws>+ } }; say A.parse(‘hello’);
IOninja This feels a bit bustified. Probably should just throw when attempting to use type smiley on natives? 04:11
camelia (timeout)
naxieAlDle m: ‘hello’ ~~ /<ws>+/
ZzZombo: ok, here's the reason ↑
camelia (timeout)
naxieAlDle m: ‘hello’ ~~ /<ws>/
camelia ( no output )
naxieAlDle m: say ‘hello’ ~~ /<ws>/
camelia 「」
ws => 「」
naxieAlDle or this, to be exact
ZzZombo: <ws> may be zero-width, so you end up matching it forever 04:12
I think it has always been like this
all: say ‘hello’ ~~ /<ws>/
IOninja <ws>+ don't make sense as <ws> covers it.
naxieAlDle but we can double-check, of course
committable6 naxieAlDle, gist.github.com/7487193b7df50e7e88...2f6fecf4be 04:13
naxieAlDle all: say 'hello' ~~ /<ws>/
ya
Todd Hi All, A quick question on subsitutions. This subsitution `$Clipboard ~~ s:global|\t| |;` replaces tabs with spaces. Question, if I had wanted to use `chr(9)` instead of `\t`, how would I do such (what is the syntax)?
committable6 naxieAlDle, gist.github.com/4ef103af1276adad35...9a9b6524b4
naxieAlDle Todd: <{chr(9)}> perhaps 04:14
IOninja Todd: {chr 9)} instead of \t
s/)//
Todd testing
ZzZombo m: grammar A {token TOP { (<alnum>+ || <cntrl>+ || .)* } };class B { method TOP($/) { say $/ }};say A.parse(' founded the Evidenzbureau in 1850 as the ',:actions(B));
camelia 「 founded the Evidenzbureau in 1850 as the 」
0 => 「 」
0 => 「founded」
alnum => 「f」
alnum => 「o」
alnum => 「u」
alnum => 「n」
alnum => 「d」
alnum => 「e」
alnum => 「d」
0 => 「 」
0…
IOninja Ah, right, naxieAlDle's version
ZzZombo hm... but I do need whitespaces covered 04:15
naxieAlDle ZzZombo: what about \s+ ? 04:16
ZzZombo m: grammar A {token TOP { (\s+ || <alnum>+ || <cntrl>+ || .)* } };class B { method TOP($/) { say $/ }};say A.parse(' founded the Evidenzbureau in 1850 as the ',:actions(B));
camelia 「 founded the Evidenzbureau in 1850 as the 」
0 => 「 」
0 => 「founded」
alnum => 「f」
alnum => 「o」
alnum => 「u」
alnum => 「n」
alnum => 「d」
alnum => 「e」
alnum => 「d」
0 => 「 」
0…
ZzZombo is't it supposed to be the same?
naxieAlDle not at all 04:17
but if you mean “one or more spaces”, then you need \s+
or, optionally, you can redefine <ws> to mean \s+
Todd Thank you.. My test has a sybntax error. once I figure it out, I will be back 04:23
Geth whateverable: 08d08fb9e7 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 5 files
Make sure it is possible to add a comment after URLs

Adds tests for issue #75.
04:26
Geth whateverable: 5c8e78f444 | (Aleks-Daniel Jakimenko-Aleksejev)++ | t/committable.t
Test the fallback response

Adds a test for issue #67.
Generally, this fallback was added to handle buggy behavior. Any bot should figure out what to respond for *any* given command. Committable is the only bot that does not do so, which is why we are able to test the fallback response. Arguably, this should be changed, but the default response is actually spot on in this particular case.
05:10
samcv looks like latest kde adds support for EditorConfig 05:51
that's neat
editorconfig for everything!
Geth doc: fd7a41bca3 | (Zoffix Znet)++ | doc/Type/IO/Path.pod6
[io grant] Improve code example

  - remove Perl 5-ist parentheses
  - avoid repetition of a variable
  - fix incorrect Range (prose says "first three files")
  - gather IO::Paths, not strings
  - Don't use regex when we don't need it
  - No need to test .f
05:57
Geth doc: 110efb41af | (Zoffix Znet)++ | doc/Type/IO/Path.pod6
[io grant] No need for `.ends-with`
06:01
samcv good post by someone who worked at microsoft about programming and complexity hackernoon.com/complexity-and-stra....ob7riudaf 06:02
Geth whateverable: daf479ad16 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 5 files
Make sure bots understand their misspelled nicknames

Adds tests for issue #39.
06:04
faraco IONinja: I'm sure people will adopt it more in the future. 06:08
Todd Hi, I am back. I am still tryuing to figure out `s:global|{chr(9)}|Z|`. I create a test program to demonstrate the issue I am having. vpaste.net/OIoMP Would you guys mind taking a look at it? 06:11
IOninja Todd: it's <{chr 9}> not {chr 9} 06:12
IOninja You can also use \x[9] 06:13
What are you trying to do anyway?
Todd perl6 -e 'my $x="a\tb\tc"; say $x; $x ~~ s:global|<{chr(9)}>|z|; say $x'
Null regex not allowed
DnAeillaxe m: my $x="a\tb\tc"; say $x; $x ~~ s:global|<{chr(9)}>|z|; say $x
camelia a b c
5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Null regex not allowed
at /home/camelia/EVAL_0:1
------> 3anon regex { 7⏏5}
IOninja m: my $x="a\tb\tc"; say $x; $x ~~ s:global|a<{chr(9)}>|z|; say $x 06:14
camelia a b c
5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Null regex not allowed
at /home/camelia/EVAL_0:1
------> 3anon regex { 7⏏5}
IOninja heh
DnAeillaxe wtf?
Todd perl6 -e 'my $x="a\tb\tc"; say $x; $x ~~ s:global|<{chr 9}>|z|; say $x' same error
IOninja Todd: what are you trying to do?
DnAeillaxe maybe you'd love .trans more? 06:15
IOninja Ah
m: my $x="a\tb\tc"; say $x; $x ~~ s:ss:global|<{chr(9)}>|z|; say $x
camelia a b c
5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Null regex not allowed
at /home/camelia/EVAL_0:1
------> 3anon regex { 7⏏5}
Todd I am trying to put together an example subsitute file that shows how to subsitute a non-printable character that doesn't have a fancy `\t` for it
DnAeillaxe “{chr(9)}” ?
IOninja Well, whatever the switch to use significant spacing is 06:16
DnAeillaxe m: my $x="a\tb\tc"; say $x; $x ~~ s:ss:global|"{chr(9)">|z|; say $x
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3\tc"; say $x; $x ~~ s:ss:global|"{chr(9)7⏏5">|z|; say $x
expecting any of:
infix
infix stopper
statement end
s…
DnAeillaxe m: my $x="a\tb\tc"; say $x; $x ~~ s:ss:global|"{chr(9)}">|z|; say $x
camelia 5===SORRY!5=== Error while compiling <tmp>
Couldn't find terminator |
at <tmp>:1
------> 3c"; say $x; $x ~~ s:ss:global|"{chr(9)}"7⏏5>|z|; say $x
expecting any of:
horizontal whitespace
infix stopper
st…
DnAeillaxe m: my $x="a\tb\tc"; say $x; $x ~~ s:ss:global|"{chr(9)}"|z|; say $x
camelia a b c
azbzc
DnAeillaxe \o/
samcv why not just \x[9]
Todd perl6 -e 'my $x="a\tb\tc"; say $x; $x ~~ s:global|"{chr 9}"|z|; say $x' Perfect!!!! Thank you!
DnAeillaxe m: my $x="a\tb\tc"; say $x; $x ~~ s:ss:global|\x<9>|z|; say $x 06:17
camelia 5===SORRY!5=== Error while compiling <tmp>
Unrecognized backslash sequence: '\x'
at <tmp>:1
------> 3x="a\tb\tc"; say $x; $x ~~ s:ss:global|\7⏏5x<9>|z|; say $x
samcv yeah gotta have the interpolation to have it actually act as a string not as code
m: my $x="a\tb\tc"; say $x; $x ~~ s:ss:global|\x[9]|z|; say $x
camelia a b c
azbzc
DnAeillaxe Todd: oh… so 06:19
DnAeillaxe m: my $x="a\tb\tc"; say $x; say $x.trans((chr 9,) => (‘Z’)) 06:19
camelia a b c
aZbZc
DnAeillaxe Todd: why not something like this? 06:20
samcv i'm still not sure what he.'s trying to do 06:21
Todd no reason. I just want to get `s` down. I am trying to learn its quirks
samcv replace tabs with z's?
use \t or \x[7]
or you can be weird and do "{ }" if you want, or even put code there
or something
well i mean code that creates the string literal
samcv m: say 'abcdefg' ~~ s/"{'d' ~ 'e'}"/z 06:22
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed replacement part; couldn't find final /
at <tmp>:1
------> 3say 'abcdefg' ~~ s/"{'d' ~ 'e'}"/z7⏏5<EOL>
expecting any of:
horizontal whitespace
infix stopper
samcv m: say 'abcdefg' ~~ s/"{'d' ~ 'e'}"/z/
camelia Cannot modify an immutable Str
in block <unit> at <tmp> line 1
samcv m: my $a = 'abcdefg'; $a ~~ s/"{'d' ~ 'e'}"/z/
camelia ( no output )
samcv m: my $a = 'abcdefg'; say $a ~~ s/"{'d' ~ 'e'}"/z/
camelia 「de」
samcv m: my $a = 'abcdefg'; $a ~~ s/"{'d' ~ 'e'}"/z/; say $a; 06:23
camelia abczfg
Todd `\x9` is hex?
samcv my bad. it returns the match, but changes the variable
yes Todd
Todd waht is octal and what is base 10? 06:24
\x9 worked too
samcv never done octal unicode before. sounds silly 06:25
DnAeillaxe \c[9] is dec
samcv what 06:25
you serious?
DnAeillaxe am I wrong? 06:26
samcv idk
m: say "\c[BOY]"
camelia 👦
samcv that sure ain't a number
DnAeillaxe m: my $x="a\tb\tc"; say $x; $x ~~ s|“\c[97]”|z|; say $x
camelia a b c
z b c
DnAeillaxe but that is
samcv m: say "\c[20]"
camelia
samcv huh. that's super weird... ok
DnAeillaxe :)
samcv until unicode names something that's all numbers i guess we'll be fine 06:27
which is not allowed in their current rules. it has to start with an ascii letter
cant't have two spaces in a row or two dashes in a row either
DnAeillaxe u: fullwidth five 06:28
unicodable6 DnAeillaxe, U+FF15 FULLWIDTH DIGIT FIVE [Nd] (5)
DnAeillaxe m: say “\c[55]”
camelia 7
DnAeillaxe m: say “\c[555]”
camelia ȫ
samcv DnAeillaxe, so does it check the 1st character and see if it's a number? 06:29
should look at the source. wherever it is in there
DnAeillaxe haven't seen the source code for this
samcv i did. a while ago
samcv well. actually recently. but not the part we're talking about. but it's probably the same file or maybe related. let me see 06:30
cause i removed jvm's #?if since i added getstrfromname to jvm 06:31
DnAeillaxe m: say “\o[10”
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in octal character; couldn't find final ']'
at <tmp>:1
------> 3say “\o[107⏏5”
DnAeillaxe m: say “\o[10]”
camelia
DnAeillaxe okay, that's octal
samcv ew
oh i must have only removed it from rakudo. nqp still has the ?if's in there 06:32
i might have to regenerate the stages if i do that
or maybe not. not sure about the jvm 06:33
travis-ci Doc build passed. Zoffix Znet '[io grant] No need for `.ends-with`' 06:33
travis-ci.org/perl6/doc/builds/210199966 github.com/perl6/doc/compare/fd7a4...0efb41af0b
DnAeillaxe github.com/perl6/nqp/blob/f414161e...r.nqp#L162 06:33
m: say “\c[5_5_5]” 06:34
camelia ȫ
Todd I am not getting binay or octal to work `s:global|\o12|Q|` `s:global|\b1001|R|`
travis-ci Doc build passed. Zoffix Znet '[io grant] Improve code example 06:34
travis-ci.org/perl6/doc/builds/210199463 github.com/perl6/doc/compare/9c2b7...7a41bca34d 06:35
samcv that makes the code there make so much more sense now 06:36
DnAeillaxe Todd: it should be \o11
samcv i mean i had worked with it, but didn't know \c[99] would work, though it makes sense
samcv yeah i need to regenerate the jvm stages 06:37
DnAeillaxe Todd: and binary is not going to work this way, I believe 06:38
Todd `s:global|\b1001|R` it is not. The octal worked as soon as I put the right number in 06:39
DnAeillaxe samcv: what's the meaning of this? | <control=[ ?..Z ]>
samcv idk where are you seeing that 06:40
DnAeillaxe github.com/perl6/nqp/blob/f414161e...r.nqp#L166 06:41
looks like some dead code
and this is what happens with it later: github.com/perl6/nqp/blob/b069919f...#L231-L232
samcv why do you say dead code? 06:42
DnAeillaxe how can you trigger it?
m: say "\c[A]" # nope
camelia 5===SORRY!5=== Error while compiling <tmp>
Unrecognized character name [A]
at <tmp>:1
------> 3say "\c[A7⏏5]" # nope
samcv github.com/perl6/nqp/blob/f414161e...r.nqp#L143 06:42
IOninja DnAeillaxe: the meaning is set $<control> to the Match that matches <[?..Z]> 06:43
*matched
DnAeillaxe sure, that I understand
DnAeillaxe but I wonder why \c[A] doesn't work 06:44
IOninja Because there's no char named "A"?
Or is that the code that matches stuff?
IOninja Ah 06:44
DnAeillaxe m: say "\cA" 06:45
camelia
DnAeillaxe ah
m: say "\cZ"
camelia
DnAeillaxe because I'm blind, yet again 06:45
ok now it makes sense
Todd Got another question: I asked the badly on the mailing list. So, I will trying asking it a little more clearly. We have all kinds of escaped characters for various things, for instance `\t`, `\n`, \d`, `\D` etc.. Is there a list of all these somewhere? 06:46
DnAeillaxe and also:
m: say "\c[55]"
camelia 7
DnAeillaxe m: say "\c55"
camelia 7
samcv Todd, start heredocs.perl6.org/language/regexes#Ba...er_classes 06:47
DnAeillaxe hm… ok nevermind
Todd Hi Sam! Perfect!! Thank you!
samcv np 06:48
Todd And, how about a list of all the special characters `:xxxx`, for instance, `:space` `:global` ? 06:49
DnAeillaxe Todd: docs.perl6.org/language/regexes#Adverbs what about this? 06:51
m: say "\c[BOY, 0x7_0, 0b110_011, 55]"
camelia 👦p37
DnAeillaxe ok
m: say "\cZ" 06:52
camelia
DnAeillaxe wonders why characters 0x1B…0x1F have no shortcut 06:53
DnAeillaxe ah, because of the way it is implemented, maybe. Whatever. My horse is getting tired. 06:55
Todd DnAeillaxe: I wanted that one too! Thank you. But I still need the long ones, like :space and :global
You read my mind! 06:56
DnAeillaxe Todd: it's all there
Todd I just did not scroll far enough. Thank you! 06:58
faraco .tell timotimo Sorry for a very late reply, here is the benchmark with whitenoise.pl - 06:59
yoleaux faraco: I'll pass your message to timotimo.
faraco real0m3.725s - user0m3.280s - sys0m0.120s
Todd I am trying to count the number of letters in a string. Not having much luck. DuckDuckGo is giving me tons of Perl 5 examples. Thisis what I have that does not work: 07:09
perl6 -e 'my $x='12abc34'; my $i; for $x ~~ :global/\D/ {$i++;}; say $i;'
Todd Doesn't like my ~~ 07:10
ZzZombo_ Cannot resolve caller end(Text::Generator::BasicText::Actions: Match); none of these signatures match: 07:13
(Any:U $: *%_)
(Any:D $: *%_)
grammar Test
{
token TOP { ([<whitespace> || <word> || <symbol>]* <end>) }
...token end { $ }
}
what's wrong?
Geth whateverable: ef025b9cb2 | (Aleks-Daniel Jakimenko-Aleksejev)++ | t/benchable.t
Benchable does this fallback thingy too
07:14
DnAeillaxe Todd: why not just $x.chars ? 07:15
ah, number of letters… 07:16
fine
m: my $x='12abc34'; say +$x.comb(/\D/)
ZzZombo_ huh, renaming end to endd solved this.
camelia 3
Todd I will have a time string `01:24` in hours and minutes format. I need to test the string to make sure it is really a valid time string (I will be reading it from the clipboard). So I wanted to know how many letter and how many numbers are in the string. I also wanted to know how many colons were present. So I wanteer to know the count of letters, numbers, and colons 07:18
DnAeillaxe m: my $x=‘12abc34’; my $t; $t++ if /\D/ for $x.comb; say $t
camelia 3
Todd I will run your example 07:19
CIAvash Todd: m:global/\D/
Todd how do I use that 07:20
?
Dn's example worked. 07:21
CIAvash "m" is missing in the code you pasted, before :global 07:23
Todd my $i; for $x ~~ m:global/\D/ {$i++;}; say $i;' 07:24
syntax error near unexpected token `~~'
IOninja m: subset ValidTime where {try DateTime.new: "2016-12-31T$_:00"}; say $_ ~~ ValidTime for '12:00', '28:00', '00:56' 07:25
camelia True
False
True
CIAvash m: my $x='12abc34'; my $i; for $x ~~ m:global/\D/ {$i++;}; say $i; 07:26
camelia 3
CIAvash Todd: ↑
Todd testing
IOninja m: my $x='12abc34'; my $i = elems $x ~~ m:global/\D/; say $i 07:27
camelia 3
Todd That worked worked Thank you! I take it "m" meant "match"? 07:29
Todd Thank you guy! I have to call it quits for the night 07:34
parv muses that Trigun ref showed up here. Hi there CIAvash. 07:37
parv just heard "Dad's blast was awesome". :-O 07:39
CIAvash hmm, it's not a Trigun ref 07:42
parv The "blast" was from Dragon Ball something. 07:43
samcv m: say "\c[penguin #blah blah]" 08:13
camelia 5===SORRY!5=== Error while compiling <tmp>
Unrecognized \c character
at <tmp>:1
------> 3say "\c[7⏏5penguin #blah blah]"
expecting any of:
argument list
double quotes
term
samcv m: say "\c[penguin#blah blah]"
camelia 5===SORRY!5=== Error while compiling <tmp>
Unrecognized \c character
at <tmp>:1
------> 3say "\c[7⏏5penguin#blah blah]"
expecting any of:
argument list
double quotes
term
samcv hmm
yeah that doesn't even work. i think somebody intented you to be able to put comments inside "\c[ ] things 08:15
github.com/perl6/nqp/blob/f414161e...r.nqp#L159 08:16
samcv yeah it doesn't even work across lines 08:17
moritz lol I blogged: perlgeek.de/blog-en/perl-6/2017-01...iable.html 08:33
fir3starter how do you check if two hashes are identical? 08:50
m: {a => 5} == {a => 7}
camelia WARNINGS for <tmp>:
Useless use of "==" in expression "{a => 5} == {a => 7}" in sink context (line 1)
parv smart op?
parv sorry, smart match. 08:51
fir3starter m: {a => 5} ~~ {a => 7}
camelia ( no output )
fir3starter m: say {a => 5} ~~ {a => 7}; 08:51
camelia False
fir3starter m: say {a => 5} ~~ {a => 5};
camelia False
fir3starter smart match doesn't work 08:53
TEttinger m: say ({a => 5} ~~ {a => 5}); 08:54
camelia False
TEttinger hm
CIAvash m: say {a => 5} eqv {a => 5};
camelia True
TEttinger thanks 08:55
is eqv operator-like?
it looks infix there
CIAvash docs.perl6.org/routine/eqv 08:56
fir3starter according to this www.dlugosz.com/Perl6/web/eqv.html it is an operator
TEttinger yep, and CIAvash's link too 08:57
thanks
samcv fir3starter, use eqv 08:59
fir3starter unfortunately it still doesn't work with this:
m: {a => (5, 5)} eqv {a => [5, 5]}
camelia WARNINGS for <tmp>:
Useless use of "eqv" in expression "{a => (5, 5)} eqv {a => [5, 5]}" in sink context (line 1)
fir3starter m: say {a => (5, 5)} eqv {a => [5, 5]}; 09:00
camelia False
samcv fir3starter, how old is that site?
documentation on eqv is here docs.perl6.org/routine/eqv
TEttinger those aren't equivalent, right?
samcv no they are different things 09:01
parv is eqv preferred over smart match? does docs.perl6.org/routine/$TILDE$TILDE list all the possible expected operands?
samcv say {a => (5, 5)} ~~ {a => [5, 5]};
m: say {a => (5, 5)} ~~ {a => [5, 5]};
camelia False
samcv parv, uh smart match does different things in differetn contexts
fir3starter is there an operator that would treat these as equal?
TEttinger doesn't smart match check for contains?
samcv if you want to compare hashes, i don't think ~~ will help you
fir3starter ~~ checks if the number of keys is the same 09:02
samcv m: say {a => (5, 5)} eq {a => [5, 5]};
camelia True
samcv they both stringify the same, but that's not that great a way to do it. but works i suppose 09:03
also i'm not sure fir3starter
what is the application
parv is there any other current doc/article that discusses smartmatch in more details than docs.perl6.org/routine/$TILDE$TILDE? 09:03
samcv not sure parv but ~~ can do uh ranges 09:04
and regex and uh
well there's a list there
if you don't understand one of those let me know. but that list is good. 09:05
fir3starter as i see in eq, element order matters
samcv plus it can match ranges too
fir3starter m: say {b => 1, a => 2} eq {a => 1, b => 2};
camelia False
fir3starter oops, my bad :D
samcv say {b => 1, a => 2}.Str
m: say {b => 1, a => 2}.Str 09:06
camelia a 2
b 1
fir3starter my mistake
parv ok, thanks samcv. would you say the list is complete?
samcv well aside from range
parv aye.
samcv i think so
m: say 1..10 ~~ 1..5
camelia False
samcv m: say 1..5 ~~ 1..10 09:07
camelia True
samcv yeah it checks against the right hand side
also parv generally if there's a number on the right side it'll do number semantics
or if it's a string it'll stringify a number to compare
m: say '9' ~~ 9
camelia True
samcv so that compares them numerically 09:08
m: say 'a9' ~~ 9
camelia False
parv hmm. hmm. 09:08
samcv m: say 'blah' ~~ Str
camelia True
samcv can do types
m: {a => (5, 5)}».flat eqv {a => [5, 5]}».flat 09:09
camelia WARNINGS for <tmp>:
Useless use of "eqv" in expression "».flat eqv {a => [5, 5]}».flat" in sink context (line 1)
samcv m: say {a => (5, 5)}».flat eqv {a => [5, 5]}».flat
camelia False
parv i see; helps to think of ~~ as test of subset (in case of range), or (sub)type.
samcv yeah thought that wouldn't do what i want
yeah
compared based on what is in the right hand side
if it's a regex it uses regex, string it uses string semantics etc 09:10
ZzZombo I've been stuck for a while; how do I refer to each named capture in a rule like 09:11
token TOP { ([<whitespace> || <word> || <symbol>]* <eof>) }
in my action class?
fir3starter $<whitespace>, $<word>, ...? 09:13
parv is there an online perl6 REPL of some sort? 09:15
(short of here, to save my face) 09:16
samcv idk parv 09:23
parv samcv, no problemo
samcv ZzZombo, have you seen the grammar tutorial? 09:24
docs.perl6.org/language/grammar_tu...th_Actions 09:25
be back in a minute
CIAvash parv: depending on what you want to do, you can 「/msg camelia」 here or use glot.io/new/perl6 09:28
parv CIAvash: thanks. I just want to try some short snippets. 09:29
MeirG \help 09:45
\quit 09:46
\QUIT
ecocode it's /, not \ 09:47
Todd quick question that I an not find on google for perl 6: how do I find out how many elements are in an array? 09:49
This is perl 5: perl -e 'my @x=qw[ aa bb cc ]; my $y=@x; print "$y\n";' answer is 3 09:50
This is my attempt at Perl 6: perl6 -e 'my @x=qw[ aa bb cc ]; my $y=@x; print "$y\n";' answer is aa bb cc 09:51
scalar is not in perl6 either
ZzZombo I don't see anything relevant. 09:53
samcv
Todd 09:54
m: say (my @a=1,2,3).elems
camelia 3
ZzZombo m: say (my @a=1,2,3)+0 09:54
camelia 3
Todd Found it! perl6 -e 'my @x=qw[ aa bb cc ]; say @x.elems;' it is just .elems
Todd Thank you ZZ! 09:55
bye bye
Todd back again. what is the operator for modulus? I want the remainder 5 mod 3 = 2 10:01
ZzZombo m: say 10 % 2 10:02
camelia 0
Todd Thank you! docs.perl6.org/language/operators#...o_operator was no help
parv is variable binding another name for aliasing? 10:03
RabidGravy parv, whilst the effect may be like aliasing, it's somewhat different 10:20
RabidGravy docs.perl6.org/language/containers#Binding 10:21
parv RabidGravy, thanks; I just read that in moritz's post too perlgeek.de/blog-en/perl-6/2017-01...iable.html . 10:22
Todd is this the proper way to do an logical OR inside an "if"? 10:56
Todd if ( $NumCount < 2 ) || ( $LtrCount > 1 ) {do something} 10:57
RabidGravy I don''t think you need the extra parentheses but yeah 11:02
Todd Then I will check for a short between the headsets. :'( 11:03
Todd what is the question to ask if a variable is initialized? 11:05
ZzZombo_ m: say Any.defined
camelia False
gfldex Todd: there is more then one question for that 11:06
ZzZombo_ m: say defined 'asd'
camelia True
Todd Perfect! Thank you!
gfldex Todd: see docs.perl6.org/language/typesystem...efinedness
Todd Thank you! Bye Bye 11:08
ZzZombo_ b-but you don't even have to disconnect every time. 11:09
RabidGravy .seen jnthn
yoleaux I saw jnthn 11 Mar 2017 18:16Z in #perl6: * jnthn bbiab :)
RabidGravy not so much ab then :)
jnthn
.oO( Oh no, I'm being ab tested! )
11:11
RabidGravy: After something? :)
ZzZombo_ why does this suddenly not match <word>, but rather matches <symbol>: 11:13
token TOP { (<whitespace> || <word> || <symbol>)* }
token word { <.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation> <.alnum>+ }
token symbol { . } #everything else.
when parsing "Modern development"?
ZzZombo_ m: my token word { <.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation> <.alnum>+ };say "Modern development" ~~ /<&word>/ 11:14
camelia Nil
ZzZombo_ hm
m: my token word { <.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation> <.alnum>+ };say "Modern development" ~~ /<.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation> <.alnum>+/
camelia Nil
ZzZombo_ what
ZzZombo_ it used to work 11:14
RabidGravy jnthn, well I just got round to looking at the Stomp::Server - do you anticipate that the tap on process-messages should be a given/when ever the command or should it actually be split up with a bunch of greps into indivdual supplies for each command?
jnthn ZzZombo_: It expects alnum after the char class too? 11:15
ZzZombo_ m: my token word { <.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation> <.alnum>+ };say "Modern development" ~~ /(<.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation>)* <.alnum>+/
camelia 「Modern」
ZzZombo_ yes
basically words like "AT&T", "half-way"
m: my token word { (<.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation>)* <.alnum>+ };say "Modern development" ~~ /<&word>/ 11:16
camelia 「Modern」
ZzZombo_ huh
when did I mess it up?
jnthn ZzZombo_: You didn't have the (...)* around the first part in the earlier examples, I think?
ZzZombo_ yes
jnthn RabidGravy: I think (it was ages ago though) I'd originally planned it so the listen connection would give you back an object per connection 11:18
RabidGravy: iirc, one supply is probably the most useful thing, because ordering matters 11:19
mscha m: class A { has Str $.s; method gist { $!s; } }; multi infix:<cmp>(A $a, A $b) { $a.s.chars <=> $b.s.chars }; (A.new(:s<aa>), A.new(:s<b>), A.new(:s<ccc>)).sort.say
camelia (aa b ccc)
mscha m: class A { has Str $.s; method gist { $!s; } }; multi infix:<cmp>(A $a, A $b) { $a.s.chars <=> $b.s.chars }; (A.new(:s<aa>), A.new(:s<b>), A.new(:s<ccc>)).sort(&infix:<cmp>).say
camelia (b aa ccc)
mscha Shouldn't the first one output the same as the second?
jnthn RabidGravy: Like, if you get a begin transaction, then some messages, then a commit (I forget the exact commands)
mscha And if not, how can I change the default sort on custom opbjects?
objects? 11:20
jnthn RabidGravy: So I guess in that sense it works a bit like sockets themselves: you get a supply of incoming connections, giving an object which has a supply of incoming things per connection. 11:21
jnthn mscha: That's expected I think, since operators are lexically scoped 11:24
So unless you pass in your current idea of what cmp is, then the sort method will see the one that exists where it's declared 11:25
jnthn It's more typical in Perl 6 to express the sort condition when sorting, functional style (so .sort(*.s.chars)). 11:26
RabidGravy yeah, the subscribe/unsubscribe case too 11:27
jnthn Indeed 11:28
mscha jnthn: that's annoying, since in my actual case, I'd have to say .sort({ $^a.y <=> $^b.y || $^a.x <=> $^b.x }) 11:29
jnthn mscha: Then implement cmp as you have, and just pass it in 11:30
In some languages, sort order is considered something owned by an object. Perl 6 just isn't one of them.
mscha Shame. 11:31
jnthn As opposed to, say, smartmatching, which is done via. implementing an ACCEPTS method
mscha Something for 6.d?
jnthn No.
At least, I'm pretty sure it's by design this way, not an oversight.
mscha OK, too bad. Thanks. 11:32
gfldex mscha: you can .wrap operators in Perl 6 11:33
RabidGravy jnthn, so really a Stomp::Server::Connection should be thing that does the MessageStream I guess 11:34
parv later people.
jnthn RabidGravy: Yeah, that sounds reasonable
MasterDuke mscha: i noticed that project euler solution you posted yesterday was spending a lot of time in infix:<max> with Ints, so i added a candidate specific to that, it shaves a couple seconds off the time 11:34
also, make the loop variables native ints shaved another couple seconds 11:35
jnthn: left a question for you in #perl6-dev 11:36
mscha MasterDuke: “so i added a candidate specific to that”, what do you mean? 11:37
Native ints: good idea.
MasterDuke github.com/rakudo/rakudo/commit/a9c51964a0 shows the change 11:38
i added a version of max and min specifically for Ints, ints, Nums, and nums 11:39
mscha Ah, you mean in Rakudo, not my script. 11:40
MasterDuke right. you could of course do the same thing manually if you don't want to update your rakudo 11:41
i don't know how you get it, but the next official rakudo release is a week from now
mscha Thanks, MasterDuke, I'll get it eventually. (Next Rakudo Star, probably.) 11:48
m: class A { has Str $.s; method gist { $!s; } }; &infix:<cmp>.wrap(-> $a, $b { if $a ~~ A && $b ~~ A { $a.s.chars <=> $b.s.chars } else { callsame } }); (A.new(:s<aa>), A.new(:s<b>), A.new(:s<ccc>)).sort.say
camelia (b aa ccc)
mscha gfldex: that works! Elegant? Hmm, not really... 11:49
MasterDuke mscha: also, ++$x is faster than $x++, and $x = $x + 1 is faster still 11:50
jnthn Not to mention slow and not certain to work if we inline before you wrap ;P
mscha Seriously, MasterDuke? I'll remember that. 11:51
mscha Any performance difference between $x = $x + 1 and $x += 1 ? 11:51
MasterDuke yeah, $x = $x + 1 is faster 11:53
ZzZombo_ m: my token word { (<.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation>)* <.alnum>+ };say "Modern development India," ~~ /<&word>/ 11:58
camelia 「Modern」
Geth Inline-Perl5/master: 5 commits pushed by (Luc St-Louis)++, (Stefan Seifert)++
ZzZombo_ m: my token word { (<.alnum>+ <[' & . , -]+:Dash_Punctuation+:Connector_Punctuation>)* <.alnum>+ };say "India," ~~ /<&word>/
camelia Nil
tbrowder hi #perl6 12:18
tbrowder i'm seeking some advice on a function name in a module i'm releasing soon 12:19
tbrowder the module is Number::More and has subs named dec2bin, etc., for conversion of unsigned integers between binary, octal, dcimal, and hexadecimal 12:21
grondilu I'd use adverbs 12:22
tbrowder i've just added a general transformation sub and have initially named it baseM2baseN (yuk), ideas? 12:23
adverbs?
grondilu m: multi say(Int $n, :bin!) { say $n.fmt("0b%b"); }; say 5, :bin 12:24
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed parameter
at <tmp>:1
------> 3multi say(Int $n, :7⏏5bin!) { say $n.fmt("0b%b"); }; say 5, :b
grondilu m: multi say(Int $n, :$bin!) { say $n.fmt("0b%b"); }; say 5, :bin
camelia 0b101
grondilu ^adverbs are basically named parameters 12:25
tbrowder i'm using adverbs (named params). my subs allow other feature. all i'm loooking for is a name for the general sub 12:26
grondilu foo2bar seems like a common enough idiom
it's not pretty but * 12:27
tbrowder yes, hence bin2dec, etc
grondilu yeah, go for it
though frankly perl6 already has lots of ways to display an integer in various bases 12:28
mscha m: sub baseM2baseN($x, $m, $n) { $x.parse-base($m).base($n) }; say baseM2baseN('1234', 8, 16);
camelia 29C
tbrowder but a single sub for transforming base X to base Y is what i want to get a good name for. baseX2baseY seems clunky. i've thought about shortening it to 'a2b' 12:29
mscha m: sub bin2dec($x) { $x.parse-base(2) }; say bin2dec('1011001010110111'); 12:30
camelia 45751
tbrowder i get it, all that is wrapped up and working nicely
moritz gimp tells me: "Metadata parasite seems to be corrupt" 13:13
of the category "wut?" 13:14
DrForr Radiation damage on the way back from Ceti Alpha V? 13:15
ZzZombo undefine(($prefix,$word,$postfix)); # after this line... 13:22
$prev-word=$word; # dead code...
DrForr . o ( I see dead code );
ZzZombo m: my ($x,$y,$z)=1,23,5;undefine(($x,$y));$z=False;say $x,$y,$z 13:23
camelia (Any)(Any)False
ZzZombo what gives?
swapping the lines fixed the bug where $prev-word wasn't changed.
tbrowder in general, should i use tokens or named regexes for one-off matching? i think tokens don't backtrack so may be faster 13:35
how can i put a regex/token in an array so i can use it a 13:36
tadzik plus.google.com/114866592715069940...z6UixNCYCH not sure if slowpoke, but maybe a worthy insight into making JSON::Fast faster or so :)
tbrowder use it something like "$a~~ @b[6]"
gfldex m: my \r = /abc/; say 'abc' ~~ r 13:42
camelia 「abc」
gfldex m: my @r = /abc/; say 'abc' ~~ @r.all 13:43
camelia True
gfldex tbrowder: ^^^
tbrowder hi, gfldex, can you show me how to put a regex or token in an array and use it, please? 13:45
tbrowder sorry, i'm still asleep, thanks! 13:46
tbrowder ok, say i have 2 named regexes. can i put their names in an array and call them by index? 13:48
moritz m: my token word { <:alpha>+ }; my token number { \d+ }; my @re = &word, &number; say '123' ~~ @re[1]; 13:58
camelia 「123」
moritz tbrowder: ^^
tbrowder thanks, moritz! 13:59
gfldex m: say so /abc/ ~~ Callable; 14:00
camelia True
gfldex tbrowder: this ^^^ is why it works
timotimo .botsnack 14:05
synopsebot6 om nom nom
yoleaux :D
yoleaux 06:59Z <faraco> timotimo: Sorry for a very late reply, here is the benchmark with whitenoise.pl - 14:05
tbrowder moritz: then i would need boolean coercion to successful match or not, correct? 14:07
moritz tbrowder: or just use it in a boolean context (like an 'if' statement) 14:08
timotimo whitenoise.pl doesn't have a benchmark mode; it'd just run forever? 14:10
masak "What we need are *notions*, not notations" -- Gauss 14:11
I like that. feels relevant to some comments about syntax.
(hi, #perl6)
timotimo what we need are not ions!
masak timotimo: the funny thing is how syntactical your joke reply is :P
masak I fully buy that syntax *underpin* and *strengthen* notions rather than being the notions 14:12
ZzZombo So nobody has an idea why undefine caused unreachable code?
MeirG Hi folks. I was trying to intall Rakudo. It failed with 2503 error then with 2502 error. What's wrong?
masak MeirG: "2503 error"? 14:13
MeirG masak: yes, on Win10 64bits
timotimo ZzZombo: i have no idea what you mean by "dead code" there 14:14
or "unreachable"
masak MeirG: do you see an error message? 14:15
MeirG masak: Yes, just a second and I'll quote it... 14:18
timotimo oh, that's probably a visual c error then? 14:19
DrForr It looks like a .msi permission problem according to answers.microsoft.com/en-us/window...1da100c151 14:20
timotimo hah, this website recommends to kill explorer.exe and start a new one with admin privileges
nothing bad could ever happen there! 14:21
timotimo i fondly remember KDE3 used to - in some distros at least - give you a desktop background with lots of bombs on it and a big pop-up when you logged in as root 14:21
geekosaur suse did that, yeh 14:22
timotimo it was a work of art 14:23
MeirG "The installer has encounteredan unexpected error installing that package. This might indicate a problem with this package. The error code in 2503"
geekosaur as for the windows thing, you should be able to Run As Administrator the .msi
masak MeirG: huh.
MeirG: that's... disconcerting.
timotimo very strange 14:24
masak MeirG: is there anything higher up in the console output that seems to indicate there was a problem?
timotimo i don't think they're doing it from a console
masak MeirG: or are you interacting with a graphical interface that gives no such output?
timotimo that looks like typical output you'd get in a messagebox
masak aye
guess we'll have to try this ourselves on a Win64 box 14:25
and by "we", I mean "not me", because I don't own one... :)
MeirG I am an administrator. I will also look up DrForr's ling and report.masak: No, it is an msi file with doesn't invoke a consol window. It invoked an installation "wizard"
timotimo you can install msi from the console if you want, you need "msiexec /i foobar.msi" for that 14:26
but i'm not sure if it'll actually give any output on tho console
timotimo actually, i'm almost sure it'll just give you the gui, too 14:27
it's how i install .msi things when i have wine
geekosaur you need an installer script to avoid the gui, I think 14:28
been a while since I did that kind of stuff
RabidGravy I think I need a thing like Supply.merge but dynamic 14:30
DnAeillaxe to people who are subscribed to whateverable repo: I am about to reopen 11 issues that have no tests, please don't freak out :)
timotimo RabidGravy: what does "dynamic" mean? 14:31
like you can give it more supplies at any time?
masak MeirG: I wish I could give some firm guarantees we'll look into this -- but we're sort of volunteer-driven, so someone'll need to step up
RabidGravy timotimo, zackly 14:31
masak MeirG: in any case -- thanks for bringing this to our attention. I hope a solution will materialize soon.
timotimo you can look at the implementation of "migrate" 14:31
migrate takes a supply that spits out supplies and gives you a supply that'll always give values from the latest supply that was spat out by the supply-supply 14:33
so what you want is you start with a supply of supplies (where you feed in more and more supplies that are to be merged) 14:34
and whenever a supply is spat out by that supply-supply, it'll be taken into account for further emits
gfldex i just checked 2017.01-64bit on a clean win10 VM and it installs fine
RabidGravy I think my head hurts 14:35
gfldex didn't do updates lately, doing that now
timotimo haha, RabidGravy :) 14:36
timotimo i think it'll be really rather simple to write 14:39
kind of like supply { whenever $supply-of-supplies -> $new-supply { whenever $new-supply -> $value { emit $value } } }
maybe that's enough
gfldex timotimo: can i have a supply that will write my code? :-> 14:40
timotimo gfldex: if you don't mind the code being evil, you can implement an ssh server that accepts any password and gives out a root shell 14:40
timotimo that should give you code within minutes of launching 14:40
gfldex sounds like a workable solution 14:41
timotimo it even ticks a whole bunch of buzzword checkboxes
gfldex windows update is shit
timotimo it's dependency injection, it's highly networked, it's multiple-failover, it's distributed (duh), it's platform-as-a-service, it's highly available
haha, yeah, tell me about it 14:42
gfldex it stalled at 10% for 20minutes and then it raced to 90% in 30 sec
timotimo i boot windows every couple of months to play new subnautica updates ...
gfldex now it stalls again
timotimo oh, you're getting off lucky
i usually wait a couple of hours while it's saying "looking for available updates"
i'm told it's because microsoft decided to put an np-complete problem into their update mechanism 14:43
i.e. "there's a bunch of things-to-be-fixed, and any patch can have any amount of things-to-be-fixed in them. find the optimal solution to cover all things-to-be-fixed with patches"
geekosaur sadly that was because they had something even worse before
(namely not do that and break people's systems)
timotimo anyway, there's something called "wsus offline updater" 14:50
it's a neat little gui that allows you to download a whole bunch of patch files up front, and also a little tool to apply all these updates 14:51
doing that five times in a row and rebooting in between multiple times ought to get your system up to date enough for the regular windows update to finish calculating its plan of action in under two hours
tbrowder still seeking suggestions for a sub name for a general function that transforms a number in one base to that number in another base ( i don't need details of how to do that or suggested signatures). see my github/tbrowder/Number-More-Perl6 repo for the WIP. 14:56
timotimo so, like, rebase" :P
tbrowder not bad! 14:57
rebaseA2B
timotimo basetrans?
tbrowder those are good, timotimo. i've bern hung up with "x2y' as part of the name but i think yr ideas are better! 14:59
geekosaur in-base but I question the purpose
timotimo a fresh perspective can always do wonders
reinterpret-base
base2base
tbrowder amen, brudda!
geekosaur because internally it's going to be base 2 unless you are on a very experiemntal architecture or you re working with it in string format 15:00
timotimo of course this is about strings :)
Geth whateverable: 0874e785c2 | (Aleks-Daniel Jakimenko-Aleksejev)++ | t/bisectable.t
Test the hint about a useless result (⚠ + a note for contributors)

Adds a test for issue #95.
This is the last closed issue that needed a test. From now on, we will have a similar policy that is used for rakudo development:
... (5 more lines)
geekosaur maybe as-base if in-base is considered ambiguous 15:00
also if doing this a lot you might want a tagged representation (string + its base) to avoid the question of "so what base is '6' absent other information?" (could be any from 7 up to your limit) 15:04
ZzZombo [21:21:59] <ZzZombo> undefine(($prefix,$word,$postfix)); # after this line... 15:09
[21:21:59] <ZzZombo> $prev-word=$word; # dead code...
[21:23:41] <ZzZombo> swapping the lines fixed the bug where $prev-word wasn't changed.
timotimo ^
timotimo yeah, i read all of that 15:10
i still don't understand what you mean?
$prev-word "wasn't" changed?
what do you get, what did you expect? because when i run code like that i get $prev-word set to Any, which is exactly what i expect 15:11
ZzZombo you know, forget it, doesn't matter now.
geekosaur minimal reproducing case, include rakudo version, consider also running with spesh disabled 15:12
timotimo perl6 -e 'my ($prefix, $word, $postfix) = <foo bar baz>; my $prev-word = "wtf"; dd $prefix, $word, $postfix; $prev-word = $word; undefine(($prefix, $word, $postfix)); dd $prefix, $word, $postfix; dd $prev-word'
this gives me foo bar baz first, then any any any, and $prev-word at the end is "bar"
and when i put the $prev-word = $word after the undefine, it gives me foo bar baz first, then any any any, and at the end $prev-word is any 15:13
which is also exactly what i expect ?!
ZzZombo yea, it is
timotimo i'm AFK for a bit now
but i'd love for you to explain what's up. maybe put it up on a pasting site or something, along with output and expected behavior 15:14
gfldex clean install on a recent win10 too 15:15
timotimo for some reason it really irks me that you seem to have found a problem with rakudo and you're not telling us 15:16
gfldex MeirG: can't reproduce, happy digging :)
timotimo well, either a problem with rakudo, or with the docs 15:17
RabidGravy we may never know
tbrowder timotimo: i like 'rebase' best, what's yr fav of yr suggestions? 15:31
timotimo i don't have a fav, they are all acceptable 15:46
Geth doc: 9d408f0051 | titsuki++ | doc/Language/nativecall.pod6
Use num64 instead of num
15:57
tbrowder timotimo: thanks...you're very easy to please! 16:01
tbrowder i would like to test modules on my Windows box and wonder if routines run and shell work there for calling cmd and Power Shell? 16:12
timotimo shell most probably invokes cmd 16:15
timotimo github.com/jnthn/p6-ssh-libssh/blo...ild.pm#L18 16:15
this is an example of how to invoke powershell
DnAeillaxe buggable: DOC 16:16
buggable: tag DOC 16:17
buggable DnAeillaxe, There is 1 ticket tagged with DOC; See perl6.fail/t/DOC for details
DnAeillaxe definitely my bad
Geth Inline-Perl5: beaa8ce8eb | (Stefan Seifert)++ | p5helper.c
Fix segfault in Inline::Perl5.new when loaded from Inline::Perl6 without multiplicity

When perl is compiled without multiplicity, we want to throw a useful exception when the user tries to create multiple interpreters. When loaded via Inline::Perl6 we did not take the already running interpreter into account. Now instead of segfaulting, we point the user at the actual source of the problem.
Fixes GH #73
16:22
ecosystem: Demayl++ created pull request #309:
rename META of Email::Valid and add tags
16:23
tbrowder timotimo: nice link...thanks! 16:25
Geth ecosystem: 250d5c90c7 | Demayl++ | META.list
rename META of Email::Valid and add tags
ecosystem: a7ddf8d71a | (Itsuki Toyota)++ | META.list
Merge pull request #309 from Demayl/master

rename META of Email::Valid and add tags
nine Darn...I have a very neat fix for Inline::Perl6, but it depends on an implementation detail of the recent require-fixes. 17:11
Right now in Perl 5 'v6::run("use Foo;"); v6::call("Foo::bar");' won't work due to the lexicalness of "use Foo" 17:12
mst nine: I always thought it was odd that you were doing that rather than having a context object to run against 17:15
nine Now with the recent fixes, a require statement installs a lexical %REQUIRE_SYMBOLS which we use with indirect lookup ::($foo). Since v6::call and v6::invoke use indirect lookup, I can easily save and restore %REQUIRE_SYMBOLS. 17:16
mst right, if you basically turn them into implicit calls on a global context 17:19
that should be basically sane
nine Yep. Except that it turns %REQUIRE_SYMBOLS in a public API which is not really what I had in mind when introducing it. 17:20
mst and, er, you could always add an api to rakudo that's equivalent to Eval::WithLexicals or Devel::LexAlias or something
a persistent lexical scope module would make it much easier to build repls 17:21
and, y'know, look what we inflicted on CPAN as a result of perl5 not having an API for it ;)
nine Thing is that EVAL already takes an optional context object. But that's a PseudoStash which is...not exactly a straight forward data structure.
ugexe samcv: did you ever try leaving the TCI language as perl but change github.com/rakudo/rakudo/blob/nom/...is.yml#L22 to `openjdk-7-jdk` instead of -jre? 17:53
samcv ugexe, yeah it has a too old perl version
oh. uhm
uh i tried it once. you can go ahead and try now if you want. it's working fine right? 17:54
ugexe yeah, but the change to the nqp travis-ci reminded me to follow up
easier to do things like get a perl with the correct version/compile args (for say Inline::Perl5) under the perl env 18:02
ugexe e.g. `language: perl, perl: 5.14-shrplib` 18:05
ugexe has been meaning to add $version-[moar-jvm] enum options to perl6 TCI ala `perl6: - 2017.01-moar, - 2017.01-jvm` 18:12
chansen_ Does Perl6 expose a API for Unicode sets? 19:27
chansen_ .. Unicode sets 19:27
DnAeillaxe chansen_: hmmm… what unicode sets?
DnAeillaxe chansen_: is there something specific you need? 19:28
chansen_ DnAeillaxe: combination of Unicode properties!
DnAeillaxe oh, sure. Do you need it in a regex; 19:29
?
m: say ‘hello②world’ ~~ /<:No>/
camelia 「②」
chansen_ DnAeillaxe: No, i'm looking for a clean API that I can steal and implement in P5 ;o)
DrForr Perl6 has \P{}. 19:31
Er, perl5
geekosaur I don't think it has a good set story for them though (e.g. a generalization of [] like p6's that lets you subtract sets and such) 19:33
chansen_ DrForr: I'm aware what P5 provides! The reason I asked for a clean API to access Unicode Blocks, Scripts and Properties was for inspiration, but it seems that Perl6 doesn't provide that. 19:35
chansen_ samcv: ^^? 19:37
geekosaur I thought there was something for that these days... maybe not the API you were hoping for though (in which case yes, you want to talk to samcv) 19:38
DnAeillaxe chansen_: so you want to look up characters based on properties and stuff?
DrForr .uniprop and .uniname handles at least properties, but scripts and blocks seem missing. Maybe .uniscript and .uniblock would be possible? 19:40
unicodable6 DrForr, U+006E LATIN SMALL LETTER N [Ll] (n)
DrForr, U+0069 LATIN SMALL LETTER I [Ll] (i)
DrForr, 135 characters in total: gist.github.com/344ebf70e34723b156...c67109b879
DnAeillaxe but that's one of the properties 19:40
chansen_ DnAeillaxe: Let's say I wanted to union two scripts and differentiate a block and union two block properties? 19:41
DnAeillaxe DrForr: sorry for that, that was a bug :D
uniprop: ½
unidump: ½
unicodable6 DnAeillaxe, gist.github.com/e9ccb3b9f86c41e49b...dfcb668c1d
DnAeillaxe chansen_: okay, then you use Block and Script properties 19:42
let's see
DnAeillaxe m: say ‘½’ ~~ /<:Block(‘Latin-1 Supplement’) + :Script(‘Common’)>/ 19:43
camelia 「½」
DnAeillaxe like this?
u: { .chr ~~ /<:Block(‘Latin-1 Supplement’) + :Script(‘Common’)>/ } 19:45
unicodable6 DnAeillaxe, U+0000 <control-0000> [Cc] (control character)
DnAeillaxe, U+0001 <control-0001> [Cc] (control character)
DnAeillaxe oops… 19:46
chansen_ DnAeillaxe: with all respect, you are clearly not familiar with Unicode enough to answer this question ;) 19:50
DnAeillaxe chansen_: perhaps. But it would definitely help if you said what exactly you're trying to do 19:51
chansen_: if you want to actually match stuff, then what I've shown above should work
but if not, then I guess you're trying to do something else 19:52
chansen_ DnAeillaxe: I have answered you already! 19:53
20:41:02 <chansen_> DnAeillaxe: Let's say I wanted to union two scripts and differentiate a block and union two block properties?
RabidGravy jnthn, I've just pushed a very crude start to an implementation of SUBSCRIBE/UNSUBSCRIBE to Stomp::Server 19:57
DnAeillaxe chansen_: OK, I might sound stupid to you and you'll lose all hope, but how come <:Script(‘Cyrillic’) + :Script(‘Common’)> is not a “union of two scripts”? 19:59
the rest you get in a similar fashion 20:00
DnAeillaxe ? 20:05
chansen_ DnAeillaxe: thats the union, how do you differentiate a block and union two block properties and provide the difference? 20:06
DrForr Subtract? 20:07
chansen_ DrForr: true
DnAeillaxe chansen_: if you want to have an intersection, you'll have to use & outside of <> 20:10
chansen_ The question was if there was a simple way of achieve this in Perl6, and if there was I would like to steal it to p5, but it seems that tis wheel hasten't been invented in p6
DnAeillaxe so… that's not simple enough? 20:11
moritz didn'T we have intersection in char classes too? 20:12
DrForr What are we missing? What's a simpler solution?
DnAeillaxe moritz: trying to find a ticket, but no
moritz: NYI
DnAeillaxe moritz: RT #130419 20:13
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130419
jferrero_ Hi! I need an example for enum's constants exported into a module. 20:16
chansen_ DnAeillaxe: How do I union two script properties subtract a block and union two other block properties and print out the resulting set? 20:18
DnAeillaxe chansen_: Oh, so you want to look up these characters, not to match stuff! Finally we know :) 20:19
chansen_: there is indeed no API to do this stuff. Unicodable bot, for example, goes through the whole 0..0x10FFFF range and tries to match every character 20:22
chansen_: this takes a second or two… which I guess is less than awesome. Again, it depends on what you actually need this for 20:23
DnAeillaxe chansen_: what you are asking for is basically a little database you can make queries for :) Not sure if the language itself should provide this, but I'd definitely love to see a module for this! 20:24
b2gills m: say (0..0x10FFFF).map(*.chr).grep: /<:L - :Ll>/
camelia (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ª º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ Ā Ă Ą Ć Ĉ Ċ Č Ď Đ Ē Ĕ Ė Ę Ě Ĝ Ğ Ġ Ģ Ĥ Ħ Ĩ Ī Ĭ Į İ IJ Ĵ Ķ Ĺ Ļ Ľ Ŀ Ł Ń Ņ …
DrForr regexes could possibly be introspected to a junction.
DrForr Though something like .chr.uniprop would be better... Maybe a core module that introspects the Unicode tables at compile time. 20:26
cschwenz so, when using qqx{…} and the executed command spews diagnostic messages to STDERR — on the Perl 6 side, how do i capture them? 20:29
DnAeillaxe /o\ qqx 20:30
DrForr Incidentally, when using sub MAIN(..), I don't see where the options are spec'ed.
moritz cschwenz: buy using run(@command, :out, :err) instead, or Proc::Async
cschwenz: or with 2>&1 inside qqx 20:31
cschwenz moritz++
DnAeillaxe cschwenz: see some examples here: docs.perl6.org/type/Proc
moritz cschwenz: or see perlgeek.de/blog-en/perl-6/2017-00...-cron.html for an example that uses Proc::Async 20:32
cschwenz awesome, thanks all! :-D
DrForr Ah, Bool :$flag is the key. 20:35
jferrero Is possible to export class' enum constant? 20:41
moritz enum Foo is export <...>; # I believe 20:42
DrForr Perl6::Tidy out on github, not putting it up on the ecosystem until it does something non-trivial. 21:12
sjn nice! 21:15
IOninja DrForr: out on Github where? 21:16
DrForr github.com/drforr/perl6-Perl6-Tidy
sjn DrForr: are you up for feature requests? :) 21:17
DrForr Issues are probably the best way to handle this, but yes. 21:18
sjn "Produce output according to vim modeline in input text" :) 21:19
DrForr github.com/drforr/perl6-Perl6-Tidy...6/Tidy.pm6 walks the token stream and filters out comments optionally. 6 lines is all it needs.
MasterDuke DrForr++ 21:20
sjn yeah, DrForr++ deserves some extra karma today \o/
sjn and praise and gratitude and stuff :) 21:21
sena_kun DrForr++, a really good work on that
IOninja What's .Bridge method for? 21:22
RabidGravy it's for making James Brown tracks with :) 21:23
DrForr Wow. Thanks. 21:26
moritz IOninja: basically for converting to common numeric ground 21:27
IOninja moritz: I don't get it... Why have an extra method call when all of them are converting to Num? Why not just call Num? 21:28
DrForr If I were slightly smarter what I"d do is add a Perl6::Catchall "token" that gets added when the code can't figure out what to do with a given tag instead of die as it currently does, so I can refine stepwise a little easier 21:28
Tomorrow, maybe. 21:29
moritz m: say [^5].head(3)
camelia (0 1 2)
moritz m: say [^5].head(10)
camelia (0 1 2 3 4)
moritz m: say [^5][^10]
camelia (0 1 2 3 4 (Any) (Any) (Any) (Any) (Any))
IOninja m: say [^5][lazy ^10]
camelia (0 1 2 3 4)
moritz fascinating 21:31
nick ListNinja
DnAeillaxe m: say (^∞).head(∞).is-lazy 21:33
camelia True
DnAeillaxe m: say (^999999999999).head(∞).is-lazy
camelia False
DnAeillaxe so is-lazy propagates through? 21:33
IOninja Yes. 21:34
DrForr Incidentally, you can walk back and forth, up to parents and down to children from a give node. I'm thinking abot removing that ability though because it ort of lets you break encapsulation, if you can use something other than built-in terator methods to walk the list. 21:36
spebern DrForr: did you have time to look at my attempt of fixing the antlr translater? 22:00
jnthn RabidGravy: Nice; don't see anything wrong after having a look over it 22:13
Geth whateverable: 7fbfd2c26c | (Aleks-Daniel Jakimenko-Aleksejev)++ | 2 files
Space should be required after .u

Otherwise unicodable may answer on any message starting with .u (as it just happened).
22:24
DnAeillaxe .uniprops blabla 22:25
there, fixed :)
DnAeillaxe hugme 22:30
huggable: bots
huggable DnAeillaxe, The #perl6 irc channel normally hosts several helpful bots. I am a bot, and camelia, benchable, bisectable, buggable, committable, dalek, ilbot, NeuralAnomaly, SourceBaby, synopsebot6, Undercover, yoleaux are other bots who are usually here.
DnAeillaxe huggable: bots :is: The #perl6 irc channel normally hosts several helpful bots. I am a bot, and everyone else voiced on this channel is a bot. See the full list here: github.com/perl6/doc/issues/711#is...-235414744 22:33
huggable DnAeillaxe, Added bots as The #perl6 irc channel normally hosts several helpful bots. I am a bot, and everyone else voiced on this channel is a bot. See the full list here: github.com/perl6/doc/issues/711#is...-235414744
BenGoldberg s: ("EVAL" && EVAL("42")), "Str" 22:57
SourceBaby BenGoldberg, Sauce is at github.com/rakudo/rakudo/blob/f190...Mu.pm#L454
BenGoldberg s: ("shell" && shell("ls") && 42), "Str" 22:59
SourceBaby BenGoldberg, Sauce is at appveyor.yml
BenGoldberg IOninja, I think you need to improve sub is-safish ;) 22:59
geekosaur o.O
IOninja BenGoldberg: easier to just make the bot ignore you. 23:00
BenGoldberg apologizes 23:01
BenGoldberg I'm not being mean, just pointing out that a malicious user might exploit your bot -- I only ran 'ls', but someone else might do something worse. 23:03
BenGoldberg s: ((return "really simple")) 23:09
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Attempt to return outside of any Routine␤ in block <unit> at -e line 6␤␤
BenGoldberg s: ((put("really simple\n") && 42), 'Int') 23:10
SourceBaby BenGoldberg, Something's wrong: really simple␤␤␤ERR: Cannot resolve caller sourcery(List); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
DnAeillaxe BenGoldberg: it's not just that 23:16
BenGoldberg: most bots here are kind of vulnerable to this
BenGoldberg: RESTRICTED setting practically does nothing 23:17
BenGoldberg: interestingly, right now I'm working on making whateverable more secure…
but yeah, if somebody can contribute that, please do :P
BenGoldberg s: "foo", Str ) && ("test 23:18
SourceBaby BenGoldberg, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Unable to parse expression in double quotes; couldn't find final '"' ␤at -e:7␤------> <BOL><HERE><EOL>␤ expecting any of:␤ double quotes␤ term␤
BenGoldberg s: "foo", Str ) && ("test"
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Str, Str); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
BenGoldberg s: &say, \() ) && ("test" 23:19
SourceBaby BenGoldberg, Something's wrong: ␤ERR: Index out of range. Is: 1, should be in 0..0␤ in block <unit> at -e line 6␤␤Actually thrown at:␤ in block <unit> at -e line 6␤␤
BenGoldberg s: &say, \() ) && ("test", "foo"
SourceBaby BenGoldberg, Something's wrong: foo␤␤ERR:
BenGoldberg s: &say, \() ) && ("test", "github sucks #perl6 rocks!" 23:20
SourceBaby BenGoldberg, Sauce is at github sucks #perl6 rocks!
DnAeillaxe :|
BenGoldberg Whee ;) 23:21
Geth ecosystem: 74c3f6d7c1 | (Tom Browder)++ | META.list
add module Number::More
23:39
DnAeillaxe m: ‘
’.uniname.say 23:44
camelia PARAGRAPH SEPARATOR
DnAeillaxe e: ‘
’.uniname.say
:| 23:45
s: hello
world
SourceBaby DnAeillaxe, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Undeclared routine:␤ hello used at line 6. Did you mean 'shell'?␤␤
DnAeillaxe s: ‘
’
s: ‘ ’
SourceBaby DnAeillaxe, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Str); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
DnAeillaxe s: ‘
’
he-heey!
IOninja: now that's something interesting! 23:46
haven't figured it out yet
but that's why unicodable failed a little bit earlier today 23:47
and if I got it right, JSON::Tiny is unable to work with this character also 23:48
but I'm still investigating…
DnAeillaxe m: say so 0x2029.chr ~~ /\n/ 23:52
camelia True
IOninja In the log I see it's messing with parsing of IRC protocol. The ❚⚠❚ : WORLD bit is never supposed to be triggered, I think... gist.github.com/zoffixznet/da77f4e...9905fae266 23:53
DnAeillaxe IOninja: well I don't know, but all “\n”s here are suspicious: github.com/zoffixznet/perl6-IRC-Cl...rammar.pm6 23:55
because, surprise-surprise, U+2029 does match \n 23:56
(or other way round… whatever!)
IOninja u: U+2029
unicodable6 IOninja, U+2029 PARAGRAPH SEPARATOR [Zp] (
)
DnAeillaxe u: Zp 23:57
unicodable6 DnAeillaxe, U+2029 PARAGRAPH SEPARATOR [Zp] (
)
IOninja m: say "\c[2029]" ~~ "\n"
camelia False
DnAeillaxe IOninja: it's hex
m: say "\x[2029]" ~~ "\n"
camelia False
IOninja ?
DnAeillaxe m: say "\x[2029]" ~~ /\n/
camelia 「
」
IOninja Oh right
m: dd "\c[2029]" 23:58
camelia "\x[7ed]"
IOninja What's that? decimal?
DnAeillaxe yes
IOninja Ah
DnAeillaxe u: { .chr ~~ /\n/ }
IOninja Well, I've no idea wtf that matches \n
IOninja u: newline 23:58
unicodable6 DnAeillaxe, U+000A <control-000A> [Cc] (control character)
DnAeillaxe, U+000B <control-000B> [Cc] (control character)
IOninja, U+2424 SYMBOL FOR NEWLINE [So] (␤)
IOninja, U+2B92 NEWLINE LEFT [So] (⮒)
IOninja, U+2B93 NEWLINE RIGHT [So] (⮓)
IOninja m: say "\x[2029]" ~~ "\x[A]" 23:59
camelia False
IOninja So I guess all those \n should be replaced with \x[A]
DnAeillaxe u: { so .chr ~~ /\n/ }
unicodable6 DnAeillaxe, U+000A <control-000A> [Cc] (control character)
DnAeillaxe, U+000B <control-000B> [Cc] (control character)
DnAeillaxe ah right, yes… yes, unicodable, you're actually right