🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku Set by ChanServ on 14 October 2019. |
|||
00:02
sena_kun joined
00:04
Altai-man_ left
00:05
hungrydonkey left
00:10
hungrydonkey joined
00:12
finanalyst joined
00:31
hungrydonkey left,
hungrydonkey joined
00:45
hungryd20 joined
00:47
hungrydonkey left
00:49
finanalyst left
00:50
hungryd20 left
00:51
hungrydonkey joined
01:06
oddp left
01:24
nightfrog joined
01:57
molaf left
02:01
ensamvarg3 joined,
Altai-man_ joined
02:04
sena_kun left
02:05
Manifest0 left
02:06
Manifest0 joined
02:10
molaf joined
02:21
Cabanossi left
02:22
reach_satori left,
reach_satori joined
02:25
adu joined
|
|||
adu | how do you express empty? | 02:25 | |
wasn't something like <!> | 02:26 | ||
Xliff | asu: As in set empty? | 02:29 | |
02:31
Cabanossi joined
|
|||
Xliff | m: my $a = ø; $a.gist.say | 02:32 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared routine: ø used at line 1 |
||
Xliff | m: 'ø'.uniname.say | ||
camelia | LATIN SMALL LETTER O WITH STROKE | ||
Xliff | m: 'ø'.ord.say | ||
camelia | 248 | ||
Xliff | m: my $a = ∅; $a.gist.say | 02:33 | |
camelia | Set() | ||
Xliff | adu ^^ | ||
sourceable: ∅ | 02:35 | ||
sourceable6 | Xliff, No idea, boss. Can you give me a Code object? | ||
Xliff | sourceable: my $a = ∅ | ||
sourceable6 | Xliff, github.com/rakudo/rakudo/blob/c7c1...ors.pm6#L9 | ||
adu | Xliff, no empty grammar production | 02:42 | |
02:45
xinming_ left
02:46
xinming_ joined
03:05
bdju left,
bdju joined
03:11
tejr joined
03:13
Guest311 left
|
|||
adu | How you you represent the empty grammar production? | 03:18 | |
SmokeMachine | m: say Empty | 03:21 | |
camelia | () | ||
adu | m: say "".match(token { Empty }) | 03:25 | |
camelia | Nil | ||
adu | m: say "".match(token { <!> }) | ||
camelia | Nil | ||
adu | m: say "".match(token { "something" }) | 03:26 | |
camelia | Nil | ||
adu | m: say "".match(token { "" }) | ||
camelia | 「」 | ||
adu | There we go | ||
timotimo | m: say "".match(rx/<?>/) | 03:29 | |
camelia | 「」 | ||
timotimo | m: say "oh".match(rx/<?>/) | ||
camelia | 「」 | ||
03:29
Cabanossi left
03:40
Cabanossi joined
03:43
wamba joined
04:02
sena_kun joined
04:04
Altai-man_ left
04:11
OpenZen left
04:16
softmoth joined
04:18
Xliff left
04:20
OpenZen joined
05:06
molaf left
05:08
wamba left
05:29
OpenZen left
05:43
wamba joined
06:01
wamba left,
Altai-man_ joined
06:04
sena_kun left
06:05
stoned75 left
06:07
stoned75 joined
06:08
molaf joined
06:21
adu left
06:26
tejr left
06:27
hungrydonkey left
06:30
tejr joined
06:34
hungrydonkey joined
06:38
softmoth left
07:09
brtastic joined
07:20
nightfrog left,
nightfrog joined
07:24
Black_Ribbon left
07:33
brtastic left
|
|||
AlexDaniel | u: İ | 07:43 | |
unicodable6 | AlexDaniel, U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE [Lu] (İ) | ||
AlexDaniel | this is so weird :D | ||
07:51
dolmen joined
08:03
sena_kun joined
08:04
Altai-man_ left
08:05
dolmen left
08:08
dolmen joined
08:19
dolmen left
08:26
aborazmeh joined,
aborazmeh left,
aborazmeh joined
08:29
molaf left
|
|||
moritz | it's used in Turkey for uc('i') | 08:43 | |
08:51
pecastro joined
08:53
ChrisRakuIrc joined
09:02
bocaneri left
09:04
bocaneri joined
|
|||
El_Che | I wonder if instead of declaring the name as a dependency, an uri with version (tag) could be declared. It solved the centralization problem | 09:10 | |
the only mandatory bit is forcing authors to use tags for releases, but that's something sane people do already | 09:12 | ||
09:14
oddp joined
09:17
ChrisRakuIrc left,
ChrisRakuIrc joined
09:26
ChrisRakuIrc left,
ChrisRakuIrc joined
09:27
ChrisRakuIrc left
09:44
chrisMuc joined
09:45
chrisMuc left
09:49
hungrydonkey left,
hungrydonkey joined,
aborazmeh left
09:51
aborazmeh joined,
aborazmeh left,
aborazmeh joined
09:55
chrisMuc joined
09:58
chrisMuc left
10:01
Altai-man_ joined
10:04
sena_kun left
10:45
aborazmeh left
10:48
rindolf joined
10:50
holyghost joined
10:56
kensanata joined
11:21
hungrydonkey left
11:28
holyghost left
12:02
sena_kun joined
12:04
Altai-man_ left
13:05
linkable6 joined
13:07
evalable6 joined
13:20
nightfro` joined,
nightfrog left,
nightfro` is now known as nightfrog
13:23
lucasb joined
13:32
orinthe3 joined
13:34
orinthe left,
orinthe3 is now known as orinthe
13:50
Cabanossi left
13:52
Cabanossi joined
14:01
rir joined
14:02
Altai-man_ joined
14:05
sena_kun left
14:10
rbt left
14:11
rbt joined
14:20
dolmen joined
14:37
fling left
|
|||
rbt | t | 14:39 | |
14:49
rbt left
|
|||
gfldex | lolibloggedalittle: gfldex.wordpress.com/2020/07/04/pi...made-easy/ | 14:55 | |
14:58
softmoth joined
|
|||
AlexDaniel | gfldex: another meaning is “it's not provided by core yet” :P | 15:15 | |
but yes, I actually need something like this | 15:16 | ||
15:17
rbt joined
15:20
softmoth left
|
|||
moritz | m: say <a b c>[0, 1] | 15:21 | |
camelia | (a b) | ||
moritz | m: say <a b c>[0, 1]:kv.perl | ||
camelia | (0, "a", 1, "b") | ||
moritz | m: say <a b c>[0, 1]:p.perl | ||
camelia | (0 => "a", 1 => "b") | ||
15:23
cpan-raku left
|
|||
moritz | I'm trying to get the index of the shortest element of an array | 15:23 | |
(and ingoring undefined values) | 15:24 | ||
15:24
cpan-raku joined,
cpan-raku left,
cpan-raku joined
|
|||
moritz | is there anything more compact/readable than .pairs.grep(*.value.defined).min(*.value.chars).key; ? | 15:24 | |
15:25
dolmen left
15:31
fling joined
|
|||
gfldex | AlexDaniel: The custom IO::Handle part or the whole thing? | 15:34 | |
Altai-man_ | m: <a aa aaa a>.pairs.sort(*.value.chars).tail.key.say | 15:36 | |
camelia | 2 | ||
Altai-man_ | moritz, ^ maybe this one is a bit more easy to read. But not really very concise. | ||
AlexDaniel | Altai-man_: that's potentially slower | 15:37 | |
moritz | m: say ('aaa', 'aa', 'a', Any).pairs.sort(*.value.chars).tail.key.say | ||
camelia | No such method 'chars' for invocant of type 'Any' in block <unit> at <tmp> line 1 |
||
Altai-man_ | Ah, and there are also undefined ones... | ||
Ok, never mind. | |||
AlexDaniel | moritz: if you're not using sort, then you're potentially not even creating a copy of your initial array | 15:40 | |
it'll be seqs and iterators all the way through, if rakudo does things right | |||
m: my @a = (‘foo’, ‘xxx’, ‘b’, Nil, ‘za’, ‘nnn’); say @a.pairs.min({.value.?chars // ∞}).key | 15:43 | ||
camelia | 2 | ||
AlexDaniel | moritz: what about this? | 15:44 | |
moritz | AlexDaniel: I like the sneaky way it avoids the extra grep, thanks :D | ||
AlexDaniel | m: my @a = (‘foo’, ‘xxx’, ‘b’, Nil, ‘za’, ‘nnn’); say @a[]:p.min({.value.?chars // ∞}).key | 15:48 | |
camelia | 2 | ||
AlexDaniel | a little bit of code golf :) | ||
moritz | I'm working on a small program that generates strings from regexes | 15:50 | |
in particular, shortest possible strings | |||
I'm sure it's been done before (even in raku), this is just a way to solidify my understanding of regex semantics | 15:51 | ||
lazy lists are gold for that :D | 15:58 | ||
codesections | question: are there limits (or ways to set limits) to the amount of resources a `hyper` operation takes up? I ask, because I was trying to build a shellscript like program to query zef for package info last night, and kept running into problems | 16:00 | |
I ended up using something along the lines of: | |||
moritz | codesections: .hyper(jobs => 3) iirc | ||
codesections | for $long-input.lines -> bution { f', 'info' $distribution } | ||
moritz: thanks! That's the syntax I should have been using | 16:01 | ||
moritz | docs.raku.org/routine/hyper | 16:02 | |
it's degree, not jobs | |||
16:02
sena_kun joined
|
|||
codesections | `hyper for $long-input.lines -> bution { f', 'info' $distribution }` was impressively capable of bringing even a pretty beefy dev machine to its knees! | 16:03 | |
16:04
Altai-man_ left,
dolmen joined
|
|||
moritz | for $.long-input.lines.hyper(:2degree) -> $line { ... } maybe? | 16:04 | |
codesections | Oh, there's my problem: I was reading the wrong docs page. I was on docs.raku.org/language/operators#i..._operators | ||
(which doesn't mention degree) | 16:05 | ||
Thanks for the pointer to the right page! | |||
moritz | enjoy, and good luck :D | 16:09 | |
16:18
vike left
|
|||
samebchase- | gfldex: wow. great post! 💯 | 16:25 | |
gfldex | :) | 16:29 | |
codesections | > great post! | 16:34 | |
agreed | |||
One question, though: is the complexity of this driven by wanting/needing to keep the async nature of shell pipes? | 16:35 | ||
If you were willing to wait for the first task to finish, you could do something simple with `==>`, right? | |||
16:39
charsbar joined
|
|||
moritz | my @a = ['a', 'b'], ['X'], ['1', '2']; say cross(@a).perl; say cross(|@a).perl; | 16:53 | |
evalable6 | (($["a", "b"], $["X"], $["1", "2"]),).Seq (($["a", "b"], $["X"], $["1", "2"]),).Seq |
||
moritz | none of those seem to work | ||
16:53
JJMerelo joined
|
|||
moritz | what do I have to do to get the cross product of an array of arrays? | 16:54 | |
my @a = ['a', 'b'], ['X'], ['1', '2']; say cross(@a.map(*.list)).perl | 16:55 | ||
evalable6 | (("a", "X", "1"), ("a", "X", "2"), ("b", "X", "1"), ("b", "X", "2")).Seq | ||
moritz | aaaaargh, I HATE list handling | ||
why do I need the .list here? | |||
tobs | m: my @a = ['a', 'b'], ['X'], ['1', '2']; say [X] @a | 16:56 | |
camelia | ((a X 1) (a X 2) (b X 1) (b X 2)) | ||
tobs | does this do what you needed? As for the *.list, I don't know :/ | 16:57 | |
moritz | tobs: that'd help, but in the end I actually want to do cross(..., :with) | ||
JJMerelo | The .Seq will be introduced by the map, right? And then propagated to cross | 16:59 | |
tobs | aha | ||
m: say cross(['a', 'b'], ['X'], ['1', '2']) | |||
camelia | ((a X 1) (a X 2) (b X 1) (b X 2)) | ||
tobs | so it seems to be signature of cross's doing | ||
jnthn | m: my @a = ['a', 'b'], ['X'], ['1', '2']; say [X] @a | ||
camelia | ((a X 1) (a X 2) (b X 1) (b X 2)) | ||
moritz | tobs: if that works, I don't understand why cross(|@) doesn't work | ||
cross(|@a) | 17:00 | ||
JJMerelo: I don't see how the fact that map returns a Seq affects how &cross treats the individual items | |||
JJMerelo | moritz right... Well, if cross returns a Seq, I can't really see how you would make it return something else. Why is Seq a problem? | 17:02 | |
moritz | JJMerelo: that's not my problem at all | 17:03 | |
my @a = ['a', 'b'], ['X'], ['1', '2']; say cross(@a) | |||
evalable6 | (([a b] [X] [1 2])) | ||
moritz | my problem is that in this example, cross treats each inner list as a single item | ||
my @a = ['a', 'b'], ['X'], ['1', '2']; say cross(|@a) | |||
evalable6 | (([a b] [X] [1 2])) | ||
moritz | and here as well | ||
but in | |||
say cross(['a', 'b'], ['X'], ['1', '2']) | 17:04 | ||
evalable6 | ((a X 1) (a X 2) (b X 1) (b X 2)) | ||
moritz | it doesn't | ||
and I don't understand that, because my mental of anything(|@a) is that it behaves the same as anything(@a[0], @a[1], ...) | |||
my @a = ['a', 'b'], ['X'], ['1', '2']; say cross(@a[0], @a[1], @a[2]) | 17:05 | ||
evalable6 | (([a b] [X] [1 2])) | ||
17:05
vike joined
|
|||
moritz | so putting the inner arrays into the outer array magically itemizes them | 17:06 | |
moritz so >.< close to switching to python | |||
tobs | IIRC everything in an array is by default itemized | ||
or well, I don't know. That's a very dark corner of Raku for me. | 17:07 | ||
moritz | I know that array elems need to be containers to allow modifications, but I thought we were past the "a container itemizes" stage | 17:08 | |
maybe not | |||
I hate all this list flattening and unflattening magic so much | 17:09 | ||
JJMerelo | It can get complicated and messy, yes... | ||
moritz | you know, in python `for i in x()` just throws an exception if x() doesn't return anything iterable | ||
and a, b is always a two-element tuple, no matter the contents of a and b | |||
and then it has an explicit concatenation operator | 17:10 | ||
it sometimes requires a tiny bit of manual effort, but all the edge cases are perfectly logical and pretty easy to understand | |||
in python, lazy generators and lists are distinct; again not always as comfortable as lazy lists, but performant and easy to understand | 17:13 | ||
AlexDaniel | moritz: is it the case of docs.raku.org/language/traps#Using...t_of_lists ? | 17:23 | |
I'm not really following | 17:24 | ||
moritz: well, yes, Raku is really hard. Nothing is ever straightforward or easy to understand | 17:26 | ||
there used to be a saying about “baby talk” or something like that, but one thing that people don't mention out loud is that nobody is ever able to learn any feature fully | 17:28 | ||
17:28
OpenZen joined
|
|||
AlexDaniel | so Raku is fun when you start using it, but the further you go the more frustrated you get | 17:29 | |
all the quirks and edge cases bring so much mental load that it's almost unbearable | 17:30 | ||
“A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.” | 17:32 | ||
there's a lot of things to take away from Raku, so you can probably guess what I think about the design :) | 17:33 | ||
[Coke] tries an older version of rakudo to see if cro works on that. :| | 17:34 | ||
(zef install cro on this box is soooooo slow. wtf.) | 17:40 | ||
is there a way to get verbose test output with zef? 'zef test .' is just showing that tests failed. | 17:50 | ||
timotimo | does --verbose or --debug help? zef has many flags in general | 17:52 | |
17:53
Tirifto joined
|
|||
[Coke] | verbose did it, thanks | 17:53 | |
I tried test --help and it didn't show --verbose (probably a global option not one for the subcommand) | 17:54 | ||
timotimo | ah, possible | 17:55 | |
18:02
Altai-man_ joined
18:05
sena_kun left
18:15
maggotbrain joined
18:19
wamba joined
18:28
ensamvarg3 left
18:39
dolmen left
|
|||
moritz | gist.github.com/moritz/af5f3cfcd49...045c1060b9 my basic regex inverter | 18:50 | |
supports literals, char classes, alternatives(branches) and quantifiers | 18:51 | ||
18:53
rbt left
|
|||
Geth | ecosystem: 8b9cf5b873 | thundergnat++ (committed using GitHub Web editor) | META.list Add Terminal-Boxer Automatically generate boxed tables, primarily for use in a terminal. See: github.com/thundergnat/Terminal-Boxer |
18:53 | |
18:54
rbt joined
|
|||
[ptc] | moritz: is that what was causing you headaches earlier this evening? | 18:55 | |
moritz | [ptc]: I'd say Raku's list semantics caused the headaches, and I encountered them while implementing them :D | 18:56 | |
[ptc] | :-D | ||
19:03
softmoth joined
|
|||
moritz | gist updated; now supports conjunctions | 19:11 | |
19:14
holyghost joined
|
|||
holyghost | I've just passed my 1st year bachelor of arts (painting) ! | 19:16 | |
moritz | I wonder if I should add a parser for the regexes :D | ||
holyghost: congrats! | |||
holyghost | while working for perl mongers :-) | 19:17 | |
codesections | (I don't know you but…) congrats! | 19:18 | |
19:20
stoned75 left
19:22
stoned75 joined
19:26
telex left
19:27
telex joined
19:41
wamba left
19:57
dolmen joined
20:02
sena_kun joined
20:04
Altai-man_ left
20:34
dolmen left
|
|||
moritz | gist.github.com/moritz/af5f3cfcd49...045c1060b9 updated with a basic regex parser | 20:34 | |
it only supports word characters for literals and char class contents, otherwise it supports quantifiers, conjunctions and discjunctions, groups | 20:36 | ||
20:36
dolmen joined
|
|||
moritz | haven't tried really hard to get the precedence of the parser right, you can always use [] to correct precedence | 20:37 | |
[ptc] | moritz: are you working on an update to your regex book? | 20:50 | |
moritz: just saw your tweet. That answered my question :-) | 20:51 | ||
moritz | nope. And I think it would be too much of a distraction from how regexes work, even if it's somewhat illustrative | 20:53 | |
it's a bit sad; the regex book is the one I'm most proud of, but it's the one with the fewest sales | 20:54 | ||
lizmat | but I bet it's a book that is more appreciated by the fewer people that *do* have it | 20:55 | |
[ptc] | yup, definitely. I definitely enjoyed it while reviewing it :-) | 20:57 | |
moritz | the feedback has been very positive | 20:58 | |
21:00
softmoth left
21:09
aborazmeh joined,
aborazmeh left,
aborazmeh joined
21:46
Xliff joined
21:47
aborazmeh left
21:52
softmoth joined
21:55
rindolf left
21:58
Maylay joined
22:01
Altai-man_ joined
22:04
sena_kun left
22:12
dolmen left
22:13
dolmen joined
22:16
Benett left
22:22
kensanata left,
flossy joined
22:25
Benett joined
22:39
stux|RC-only left
22:44
libertas joined
23:00
dolmen left
|
|||
cpan-raku | New module released to CPAN! LibXML (0.5.4) by 03WARRINGD | 23:02 | |
23:12
Benett left
23:18
Benett joined
23:21
Tirifto left
23:23
pecastro left
23:26
vrurg left
23:27
vrurg joined
23:48
flossy left,
flossy_ joined
|