🦋 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 available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel!
Set by lizmat on 8 June 2022.
00:07 reportable6 left 00:09 reportable6 joined
tonyo . 00:56
01:05 KvL left 01:06 KvL joined
SmokeMachine Is there a blin run for 2022.06? github.com/rakudo/rakudo/issues?q=...issue+blin 01:11
01:56 ocomporto joined 02:34 eseyman_ joined 02:35 eseyman left, eseyman_ is now known as eseyman 02:57 jjido left 02:59 frost joined 03:59 greppable6 left, linkable6 left, shareable6 left, nativecallable6 left, reportable6 left, committable6 left, quotable6 left, unicodable6 left, benchable6 left, notable6 left, coverable6 left, releasable6 left, statisfiable6 left, tellable6 left, bisectable6 left, evalable6 left, sourceable6 left, bloatable6 left 04:00 tellable6 joined, coverable6 joined, bloatable6 joined, nativecallable6 joined, reportable6 joined, sourceable6 joined 04:01 evalable6 joined, shareable6 joined, quotable6 joined, linkable6 joined, bisectable6 joined, notable6 joined, benchable6 joined, unicodable6 joined, greppable6 joined 04:02 committable6 joined, releasable6 joined, statisfiable6 joined 04:36 Kaiepi left 05:36 shareable6 left, evalable6 left, tellable6 left, greppable6 left, unicodable6 left, notable6 left, linkable6 left, committable6 left, statisfiable6 left, sourceable6 left, bisectable6 left, benchable6 left, coverable6 left, bloatable6 left, releasable6 left, reportable6 left, nativecallable6 left, quotable6 left, reportable6 joined 05:37 nativecallable6 joined, shareable6 joined, quotable6 joined, tellable6 joined, benchable6 joined, bloatable6 joined 05:38 statisfiable6 joined, greppable6 joined, bisectable6 joined, releasable6 joined, coverable6 joined, linkable6 joined, evalable6 joined, unicodable6 joined 05:39 sourceable6 joined, committable6 joined, notable6 joined 06:06 reportable6 left 06:07 reportable6 joined 06:11 abraxxa joined 06:17 abraxxa left 06:18 abraxxa joined 06:40 Sgeo left 07:32 Kaiepi joined 07:42 jjido joined 07:51 Ekho left 07:54 Ekho joined 07:55 lichtkind_ joined 08:15 jjido left 08:18 linkable6 left 08:20 linkable6 joined 08:39 MikeyHoef left 09:39 nativecallable6 left, notable6 left, tellable6 left, releasable6 left, benchable6 left, linkable6 left, unicodable6 left, reportable6 left, quotable6 left, bisectable6 left, committable6 left, sourceable6 left, shareable6 left, evalable6 left, bloatable6 left, coverable6 left, statisfiable6 left, greppable6 left, coverable6 joined, sourceable6 joined 09:40 nativecallable6 joined, quotable6 joined, linkable6 joined, committable6 joined, evalable6 joined, greppable6 joined 09:41 statisfiable6 joined, reportable6 joined, unicodable6 joined 09:42 benchable6 joined, shareable6 joined, bloatable6 joined, bisectable6 joined, releasable6 joined, notable6 joined, tellable6 joined
Nemokosch why is "The use of hash variables in regexes is reserved" and what does this even mean? 09:47
lizmat Nemokosch: reference ? 09:48
tellable6 lizmat, I'll pass your message to Nemokosch
MasterDuke $ variables just interpolate their contents, @ variables interpolate as alternations, % variables don't have a function yet 09:50
Nemokosch reference: reality 09:51
The use of hash variables in regexes is reserved
at /home/ASTRON-INF/pm7342/raku_helpers/./diffblame.raku:26
------> when /^ 'Csak ebben: ' (%base-path⏏<esko>|%base-path<kako>) (.*?) ': ' (.*)
what does "alternations" mean?
also, I think this is kind of like a sabotage
no black magic needed, I just wanted the content 09:52
dutchie m: my @foo = <one two three>; say 'one' ~~ /@foo/ # equivalent to / one | two | three / 09:53
camelia 「one」
Nemokosch so if I do @%base-path
it will do exactly what I actually need? xD
dutchie you might want @(%base-path.keys) or something 09:54
since @%base-path will be a list of pairs
Nemokosch values, rather 09:55
but yes
let's see...
well at least it doesn't error, can't check it yet 09:59
you know, these are kind of show-stoppers in my opinion 10:00
Raku is "like a jungle sometimes", its mental load scales uncomparably worse than Python 10:01
in Python, regexes are just strings. This may not be elegant but it's ridiculously powerful once you go beyond trivial in any "deviant" way
I'm still yet to find this sort of safety in Raku
that you can just safely use what you know perfectly
lizmat well, in Raku, regexes are just another way to write code
Nemokosch how do I generate it, then? 10:02
I can't always hardcode it
lizmat well, before RakuAST, using EVAL I'm afraid
afaik, RakuAST already has most, if not all, API in place to generate regular expressions 10:03
nine? ^^
Nemokosch the API doesn't have to be a raw string
but there is legitimate need for some API
RakuAST... it's like the land of promise
lizmat well, yes, it is in a way...
a promise that is getting closer... 10:04
Nemokosch like I am getting closer to a working script 10:07
and eventually, I can just "cast" everything to $, for values, this is feasible 10:09
by the way
say you have a dict
is there a way to obtain values with containers? 10:10
other than using them LHS in an assignment, of course 10:11
for example, iterating over the values as containers
okay... is there anything I should know about dynamic variables in react blocks?.... 10:20
MasterDuke github.com/rakudo/rakudo/issues/4654 might have some relevant info 10:22
lizmat .values on a Hash returns containers
m: my %h = :42a, :666b; dd %h; $_++ for %h.values; dd %h 10:23
camelia Hash %h = {:a(42), :b(666)}
Hash %h = {:a(43), :b(667)}
lizmat m: my %h = :42a, :666b; dd %h; $_++ for %h<a b>; dd %h # also slices
camelia Hash %h = {:a(42), :b(666)}
Hash %h = {:a(43), :b(667)}
Nemokosch lizmat: I see, that's not bad 10:26
lizmat BTW, same for BagHashes / MixHashes
m: my BagHash %h = :42a, :666b; dd %h; $_++ for %h<a b>; dd %h
camelia Type check failed in assignment to %h; expected BagHash but got Int (42)
in block <unit> at <tmp> line 1
lizmat ooh
Nemokosch what about something that retrieves the key as well, either as elements one after the other or as pairs?
lizmat m: my BagHash %h = :42a, :666b; dd %h; $_++ for %h.values; dd %h
camelia Type check failed in assignment to %h; expected BagHash but got Int (42)
in block <unit> at <tmp> line 1
lizmat m: my BagHash %h = (:42a, :666b); dd %h; $_++ for %h.values; dd %h
camelia Type check failed in assignment to %h; expected BagHash but got Int (42)
in block <unit> at <tmp> line 1
lizmat hmmm... /me makes mental note :-)
Nemokosch MasterDuke: thank you; so long story short, they are pretty much useless 10:28
since stdout needs to be tapped before start
basically, the processing code needs to be before start
well I can live without them, it's just... at this point, I feel I need a safe subset of Raku
and I'm afraid the safe subset of Raku wouldn't be much more attractive than Python 😅 10:30
SmokeMachine m: my %h is BagHash = :42a, :666b; dd %h; $_++ for %h.values; dd %h 10:35
camelia ("b"=>666,"a"=>42).BagHash
Nemokosch don't take me wrong, though 10:38
I will be insanely happy once this works as intended
but at the same time, this is just a helper script, basically I have this day to see if it's of any use
lizmat SmokeMachine++ # me clearly not awake enough yet :-) 10:39
SmokeMachine m: my %h is BagHash = :42a, :666b; dd %h; for %h.kv -> $key, $value is rw { $value += ord($key) }; dd %h # Nemokosch 10:40
camelia ("a"=>42,"b"=>666).BagHash
SmokeMachine Nemokosch: what's pretty useless? 10:41
tellable6 SmokeMachine, I'll pass your message to Nemokosch
10:41 RakuIRCLogger left, Geth__ joined, lizmat_ joined 10:42 Geth left 10:43 lizmat left
SmokeMachine m: my $PROCESS::BLA = 42; sub say-ble { say $*BLE }; react whenever Supply.from-list: <a e i o u> -> $vogal { say $*BLA; my $*BLE = $vogal; say-ble } # Nemokosch: about react block and dyn var 10:48
camelia 42
Nemokosch so rw works 10:49
I think I messed something up with the destructuring
oh no, the markdown again...
so we have $*BLE
and $*BLA maybe?
SmokeMachine yes, $*BLA and $*BLE 10:50
Nemokosch I wonder if image attachments are traversed... 10:51
SmokeMachine m: gist.github.com/FCO/9769e89ab94f10...7add637746 10:52
camelia 42
10:52 Nemokosch joined
Nemokosch okay let tell hit 10:52
tellable6 2022-06-07T10:07:31Z #raku <MasterDuke> Nemokosch: what do you mean about numeric context?
SmokeMachine Nemokosch#9980: Maybe this ☝️ would help?
tellable6 2022-06-09T09:48:54Z #raku <lizmat> Nemokosch: reference ?
2022-06-09T10:41:09Z #raku <SmokeMachine> Nemokosch: what's pretty useless?
Nemokosch so the barrier is at the react block? 10:53
10:53 Nemokosch left, lizmat_ is now known as lizmat
so what I understand: as long as the dynvar is purely inside the react block, things are fine 10:54
SmokeMachine m: gist.github.com/FCO/9769e89ab94f10...7add637746
camelia 42
SmokeMachine m: gist.github.com/FCO/9769e89ab94f10...7add637746 10:56
camelia 0
SmokeMachine Nemokosch: ☝️ 10:57
tellable6 SmokeMachine, I'll pass your message to Nemokosch
Nemokosch something feels broken... 11:01
too many messages
SmokeMachine I was changing the code and posting again... sorry for flooding...
Nemokosch I just realized Z can be illustrated with Harder better faster stronger 11:26
SmokeMachine: gotcha, and I think I understand 11:28
11:30 jjido joined 11:40 jjido left 11:55 jgaz joined 12:07 reportable6 left 12:10 reportable6 joined
p6steve i could use some help with concurrency ... I would like to do a pattern like this: main (p1) defines a sub(), then forks a new process (p2), p2 calls sub, p1 captures stdout of p2, p2 ends 12:37
(so the fork has the process context of p1)
I couldn't figure out how to do this with Async::Process seems like this is for running an external program 12:39
I have RTFMd about .fork my $promise = Promise.start( { my $i = 0; for 1 .. 10 { $i += $_ }; $i} 12:43
say $promise.result; oops 12:44
I have RTFMd about .fork ... docs.raku.org/language/5to6-perlfunc#fork
MasterDuke there has been an nqp::fork added since that doc entry was written
p6steve MasterDuke: thanks ... I try to live in raku land rather than NQP ... guess that this has not yet surfaced to the raku API? 12:46
MasterDuke: (how) can I call this NQP fn from raku? 12:47
MasterDuke correct, nor has it been exposed in rakudo
nine lizmat: yes, RakuAST should have somewhat complete regex support already
MasterDuke m: use nqp; say nqp::add_i(1, 2)
camelia 3
lizmat nine: I wonder whether it would make sense to put that part of RakuAST already into master ? 12:48
so that people could start playing with it ?
p6steve hmmm - I vaguely recall tricks like (post fork) read own pid to decide whether I am p1/p2 then maybe some way to connect std out to std in - but too vaguely to want to go so deep 12:53
back to the drawing board 12:54
lizmat p6steve: with Raku, you generally don't want to fork 12:58
13:12 dogbert17 left 13:18 archenoth joined
ugexe thats putting it lightly 13:22
13:25 Sgeo joined 13:34 lichtkind__ joined 13:36 lichtkind_ left
p6steve yes, that's definitely out - don't suppose that there's a way to pipe stdout into a variable in the same process? 13:37
lizmat sure, change $*OUT :-) 13:41
p6steve: see e.g. raku.land/zef:lizmat/silently 13:42
specifically github.com/lizmat/silently/blob/ma...rakumod#L7 the Capturer class 13:43
p6steve lizmat: that's the ticket! perfect ... you are a star! 13:47
14:06 eseyman left, eseyman joined
p6steve alas silently redirects stdout in my script ... but the stdout I want comes from nativecall and a Rust lib.so ;-( 14:07
guess I am just going to have to make a tempfile - hohum 14:08
14:33 frost left 14:46 xinming left 14:48 jjido joined 14:56 discord-raku-bot left, discord-raku-bot joined 15:08 xinming joined
[Coke] Right, the silent trick works on the raku handle, not the underlying one 15:12
15:12 Altreus left
[Coke] p6steve: you could consider something like run with :out... 15:12
oh, you're using like rust inline or something? 15:13
[Coke] catches up
15:14 discord-raku-bot left, Altreus joined, discord-raku-bot joined 15:16 melezhik joined
melezhik Hi! 15:17
15:18 jjido left
melezhik I am thinking about spinning  up a service that allow people to run integration tests against their docker images, similar to SparkyCI but with focus on docker 15:18
so a user could deploy their docker images into temporary docker instance and run https requests against it 15:19
or run some ssh commands within docker instance to check internal structure
could be useful for Raku devs building services on Raku 15:20
just testing a water here if this is something people might find useful?
I am thinking about testing raku.land or whatever Raku related services that are distributes as docker images 15:21
again because I am going to build and own this service it's possible to bake as much Raku integration as possible into it ...
ant thoughts? I'd appreciate for a feedback  ... 15:22
15:33 vrurg left
[Coke] m: my @out; for (^1000).grep(*.is-prime).join.comb { last if @out.elems == 10; next if @out.grep($_); @out.push: $_ } put @out; 15:37
camelia ===SORRY!=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> ; next if @out.grep($_); @out.push: $_ }⏏ put @out;
[Coke] m: my @out; for (^1000).grep(*.is-prime).join.comb { last if @out.elems == 10; next if @out.grep($_); @out.push: $_ }; put @out;
camelia 2 3 5 7 1 9 4 6 8 0
[Coke] (order of digits as they appear in prime numbers, wh 15:38
Surely that can be golfed. 15:39
15:53 lichtkind__ left, lichtkind joined 15:55 vrurg joined 15:57 kaskal- joined, melezhik left, kaskal left
ugexe probably want to get rid of the .join since then the iteration through ^1000 will have o complete 16:09
m: (0..Inf).grep(*.is-prime).join.map({ say $_ }) 16:14
camelia ...
ugexe uh what
m: say (0..Inf).join
camelia ...
ugexe That doesn't seem correct
I think I'd rather have it hang indefinitely 16:15
gfldex m: (0..Inf).join.is-lazy.say; 16:29
camelia False
gfldex m: (0..Inf).^can('join')[0].&{.file, .line}.say; 16:32
camelia (SETTING::src/core.c/Any.pm6 178)
16:35 thundergnat joined
thundergnat m: say (^110).grep(&is-prime)».comb.flat.unique 16:35
camelia (2 3 5 7 1 9 4 6 8 0)
tellable6 2021-06-03T11:02:00Z #raku-dev <lizmat> .tell thundergnat that looks like a bug, could you make an issue for it?
2021-06-03T12:57:00Z #raku-dev <lizmat> .tell thundergnat github.com/rakudo/rakudo/commit/89fd8a8df8 tests would be appreciated :-)
16:35 thundergnat left
gfldex Range.join ends up in List.join with a List made with List.from-iterator 16:35
And since (0..Inf) is lazy, we end up with a stringification for a lazy list. 16:37
Actually, we might end up with `nqp::if($infinite,'...','')` . 16:38
m: (0..Inf).join.put 16:43
camelia ...
gfldex I can't find stringification of infinite lists in Roast. 16:48
17:04 Kaiepi left, Kaiepi joined 17:05 Kaiepi left, Kaiepi joined
p6steve Coke: yep I'm making a lib.so with rust then nativecall ing it ... finally bit the bullet and doing as Nativecall callback 17:13
17:13 kaskal- left 17:14 kaskal joined 17:20 Sankalp left 17:21 Sankalp joined
p6steve Coke: I have put the recipe for Rust callbacks here github.com/p6steve/raku-Inline-Rust 17:33
17:37 kaskal left, kaskal joined 17:44 morte_ joined 17:54 kaskal left 18:08 reportable6 left 18:10 reportable6 joined 18:11 kaskal joined 18:52 dogbert17 joined 18:56 mexen left 18:59 monkey_ joined 19:26 morte_ left 19:29 abraxxa left 19:34 Kaiepi left 19:37 monkey_ left 20:00 morte_ joined 20:02 Kaiepi joined
p6steve just went from 1.1k to 1.2k rakoons on reddit 20:09
lizmat yup, yesterday... well actually it just got past 1150 (1154 now) 20:10
jgaz It's still progress. 20:22
20:23 lizmat_ joined 20:27 lizmat left 20:31 morte_ left 20:39 linkable6 left 20:42 linkable6 joined
Nemokosch Is %hash>>.methodcall described somewhere in the docs? 21:04
[Coke] docs.raku.org/language/operators#m...op_%3E%3E. 21:05
Nemokosch I don't see anything about the behavior with hashes 21:10
The very slight mention I could find at the general hyper description: 21:11
> Hyper operators can work with hashes. The pointy direction indicates if missing keys are to be ignored in the resulting hash. The enclosed operator operates on all values that have keys in both hashes.
Anton Antonov What does determine the popularity of reddit group? (Lilke /r/rakulang.) The quantity of the posts? The quality? Or, as in Raku's case, "just" the number of Raku-users and/or Raku-curious? 21:12
[Coke] was just pointing at the >>. operator. To offer an example: 21:13
m: my %e = <a b c d>; dd %e>>.uc; 21:14
camelia {:a("B"), :c("D")}
Nemokosch It does seem that de facto it operates on the value
I'm already using that
I was just curious if this behavior is explicitly recorded somewhere 21:16
21:29 morte_ joined, MasterDuke left
p6steve m:1154.round(100) 21:34
[Coke] $ ack '%.*>>\.' # 5 files in roast, 10 hits or so
[Coke] m: dd 1154.round(100) 21:35
camelia 1200
[Coke] m: dd 1154.round(103)
camelia 1133
21:40 MasterDuke joined, xinming left
p6steve m: dd 'haha' 21:41
camelia "haha"
21:41 xinming joined
Nemokosch haha 21:41
21:51 jgaz left 21:55 morte_ left
gfldex <@297037173541175296> >>. is an operator and those coerce by design. Since >>. will operate on List, it will coerce any LHS to that. 21:59
Nemokosch that doesn't explain the behavior, though. The has turns into a list of pairs, what happens then? 22:01
also, new thing
what is the difference between |(blah) and (blah).Slip? 22:03
that doesn't explain the behavior, though. The hash turns into a list of pairs, what happens then? 22:04
gfldex see: github.com/rakudo/rakudo/blob/mast....pm6#L1605 22:07
Nemokosch does this mean they should always work identically? because they don't... 22:13
again, what is the catch? 😂 22:14
22:19 jjido joined 22:27 Kaiepi left 22:30 paurq left 22:52 lichtkind left 23:13 monkey_ joined 23:20 jgaz joined 23:32 jgaz left, monkey_ left 23:39 kaskal- joined, kaskal left 23:42 jjido left
drakonis huh, activity. 23:51
Voldenet |(blah) and (blah).Slip work the same, sort of
m: my $s = |(1); my $s2 = (1).Slip; dd $s; dd $s2;
camelia Slip $s = $(slip(1,))
Slip $s2 = $(slip(1,))
Voldenet …however 23:52
m: dd |(1); dd (1).Slip;
camelia 1
23:54 simcop2387 left
Voldenet I think it only makes difference when used in context of method call 23:54
23:56 Kaiepi joined 23:57 simcop2387 joined 23:59 jgaz joined