🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). This channel is logged for the purpose of keeping a history about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Log inspection is getting closer to beta. If you're a beginner, you can also check out the #raku-beginner channel!
Set by lizmat on 25 August 2021.
00:09 reportable6 left 00:14 Kaipi left 00:15 Kaipi joined
moon-child m: sub g($label) { last $label }; sub f { LOOP: for ^5 { say $_; g LOOP }; }; f() 00:19
camelia 0
moon-child I want to write something like ^, but with map instead of for. Is that possible? 00:20
01:11 reportable6 joined 01:17 jgaz joined 02:00 swaggboi left 02:06 frost joined 02:08 jgaz left 02:11 swaggboi joined 03:11 coverable6 left, linkable6 left, quotable6 left, statisfiable6 left, committable6 left, unicodable6 left, reportable6 left, squashable6 left, greppable6 left, nativecallable6 left, evalable6 left, tellable6 left, bisectable6 left, bloatable6 left, releasable6 left, shareable6 left, sourceable6 left, notable6 left, benchable6 left 03:12 bisectable6 joined, squashable6 joined, nativecallable6 joined, linkable6 joined 03:13 quotable6 joined 03:14 shareable6 joined, evalable6 joined, tellable6 joined 03:15 releasable6 joined 04:04 MasterDuke left 04:13 sourceable6 joined, greppable6 joined, notable6 joined 04:14 statisfiable6 joined, committable6 joined 05:12 bloatable6 joined, reportable6 joined 05:13 coverable6 joined 05:14 unicodable6 joined 06:07 reportable6 left 06:12 benchable6 joined 06:55 discord-raku-bot left, discord-raku-bot joined 07:02 djerius left 07:04 djerius joined 07:08 jjido joined 07:09 reportable6 joined 07:15 abraxxa joined 07:21 abraxxa left, clarjon1 joined, abraxxa joined 07:23 jjido left 07:38 jjido joined 08:00 tejr left, tejr joined 08:01 Darkcoal joined
Geth ecosystem: 26698f7b77 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | META.list
Freeze Test::When
08:42
08:56 Sgeo left 09:00 andrea[m] left 09:06 sena_kun left 09:08 sena_kun joined
Geth ecosystem: 330333dd65 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | META.list
Freeze IO::Dir
09:15
09:26 jjido left 10:01 discord-raku-bot left 10:03 gfldex left, gfldex joined 10:05 discord-raku-bot joined 10:13 sena_kun left 10:14 sena_kun joined 10:26 ShaneC left 11:26 linkable6 left, statisfiable6 left, bloatable6 left, unicodable6 left, benchable6 left, coverable6 left, notable6 left, nativecallable6 left, squashable6 left, committable6 left, quotable6 left, reportable6 left, tellable6 left, releasable6 left, shareable6 left, evalable6 left, sourceable6 left, greppable6 left, bisectable6 left 11:27 unicodable6 joined 11:28 shareable6 joined, bloatable6 joined, linkable6 joined, sourceable6 joined, benchable6 joined 11:29 committable6 joined, notable6 joined, coverable6 joined, evalable6 joined 11:31 razetime joined, thowe left 11:35 jjido joined 11:43 Altai-man joined 12:06 jjido left 12:10 reportable6 joined 12:14 discord-raku-bot left, discord-raku-bot joined 12:27 bisectable6 joined 12:33 razetime left
Voldenet m: sub g($lbl is rw) { $lbl = True }; my $*LOOP = False; say reduce( -> $acc, $_ { my $v = $*LOOP ?? ($acc) !! (|$acc, $_); g($*LOOP); $v }, (), |^5); 12:37
camelia (0)
Voldenet moon-child: ^ that's not map, but it's close to how fprog would solve this (I'm not sure if it's even always guaranteed to work) 12:39
m: sub g($states, $key) { $states{$key} = False }; say reduce( -> (%d, $acc), $_ { my $v = %d<LOOP> ?? (|$acc, $_) !! ($acc); g(%d, <LOOP>); say (%d, $acc, $_); (%d,$v) }, (%(:LOOP), ()), |^5); 12:48
camelia ({LOOP => False} () 0)
({LOOP => False} (0) 1)
({LOOP => False} (0) 2)
({LOOP => False} (0) 3)
({LOOP => False} (0) 4)
({LOOP => False} (0))
Voldenet output is fairly disgusting as expected
12:48 razetime joined
Voldenet in fact, for loop seems like a better solution for this 12:58
13:16 frost left 13:17 abraxxa left 13:19 abraxxa joined 13:24 abraxxa left 13:28 greppable6 joined, statisfiable6 joined 13:29 releasable6 joined 14:05 epony left 14:25 sena_kun_ joined, Altai-man left 14:27 nativecallable6 joined, tellable6 joined 14:29 quotable6 joined 14:32 razetime left 14:42 morte_ joined 14:43 razetime joined
[Coke] say:print::note:? 14:59
$*ERR.print? 15:00
15:00 epony joined 15:13 jjido joined 15:29 squashable6 joined 15:31 jjido left 15:35 Sgeo joined
japhb [Coke]: note ~? (Stringifying the argument first) 15:50
16:14 discord-raku-bot left, discord-raku-bot joined 16:18 jjido joined
[Coke] Was referring to newline addition. 16:20
but yes, having gist vs. str in the mix is also confusing. 16:21
japhb Oh yeah, I guess I was thinking say:put 16:25
16:32 Altai-man joined 16:36 sena_kun_ left 17:16 razetime left, Kaipi left 17:23 Kaiepi joined 17:29 aru joined 17:36 epony left 17:37 epony joined
aru Hi, i've been looking at raku and ocasionally I'm confused by its syntax and where ceratin things can be used. For example with grep, I'm never sure if I have to do grep({ .something }), or grep(*.something), or grep: { .something } or something else altogether. Is there a rule of thumb for these cases? 17:39
lizmat the rule is that .grep takes a Callable 17:40
{ .something } and *.something are different syntaxes for basically the same tihng
aru are they? I could have sworn there were cases when one worked and the other did not, but maybe I was doing something else wrong 17:41
lizmat also .grep({ ... }) and .grep: { ... } are also just different syntaxes for the same tinkg
well, *.foo is syntactic sugar.... and the syntax to convert an expression with * into a Callable are (intentionally) limited 17:42
aru ok, makes sense, thanks 17:45
and another thing, when it comes to specifying types. Can I express something like "a list of lists of Str*Int pairs"? 17:46
gfldex Type checks happen (mostly) at runtime and you can check for anything you like. 17:53
17:57 Tirifto left 18:00 Tirifto joined
aru right 18:01
18:07 reportable6 left 18:10 reportable6 joined 18:29 Altai-man left 18:36 morte_ left
Voldenet aru: this is mostly my personal opinion, but I really prefer the most uniform syntax in raku, so `.grep({ $^x })` which can be used almost everywhere 18:43
`.grep: { }` feels weird to use 18:45
`*.something` is convenient when you chain a lot of methods together 18:49
like `($^d.IO.dir // ()).grep(!*.basename.starts-with('.')).grep(*.d).grep(!*.l)` 18:53
also, WhateverStar has some limitations: 19:00
m: (&say, &dd).map(*("test")).say
camelia No such method 'CALL-ME' for invocant of type 'Whatever'
in block <unit> at <tmp> line 1
Voldenet m: (&say, &dd).map({.("test")}).say
camelia test
"test"
(True Nil)
19:02 sena_kun left 19:03 sena_kun joined
japhb m: (&say, &dd).map: *.("test") # Curious 19:08
camelia No such method 'CALL-ME' for invocant of type 'Whatever'
in block <unit> at <tmp> line 1
japhb Yeah, figured
19:17 ShaneC joined
aru understood, thanks 19:22
20:02 jjido left 20:32 Darkcoal left 20:43 lichtkind joined 21:26 Util left 21:36 tejr left 21:37 tejr joined 21:49 jmcgnh left 21:56 jmcgnh joined 22:18 kjp joined 22:24 Juerd left 22:30 clarjon_1 joined, guifa joined 22:31 lucerne8 joined 22:32 [Coke]_ joined, vrurg_ joined, samcv joined, gabiruh joined 22:34 xkr47_ joined, sjn_ joined 22:35 kjp_ joined 22:39 kjp left, clarjon1 left, avar left, xinming left, xkr47 left, [Coke] left, vrurg left, phogg left, perlmaros left, guifa_ left, sjn left, lucerne left, samcv_ left, gabiruh_ left, tib left, lucerne8 is now known as lucerne, xkr47_ is now known as xkr47 22:45 vrurg_ is now known as vrurg, avar joined, xinming joined, phogg joined, perlmaros joined 22:47 tib joined 23:29 djerius left 23:33 jjido joined 23:36 djerius joined