🦋 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:02 reportable6 left 00:04 reportable6 joined 00:09 squashable6 left 00:11 squashable6 joined
Geth doc/codesections-eager-sub: 97761a036b | (Daniel Sockwell)++ (committed using GitHub Web editor) | doc/Type/List.pod6
Remove &eager sub form

This removes the &eager sub, which does not seem to exist.
  (There's an .eager method and an eager statement prefix, but no sub)
doc: codesections++ created pull request #3994:
Remove &eager sub form
01:01 patrickb left 01:11 japhb left, japhb joined 01:23 gordonfish- is now known as gordonfish 01:25 ProperNoun joined
Geth doc/master: 4 commits pushed by Coke++ 01:30
01:48 kjp left 01:55 Skarsnik left 02:04 ProperNoun left 02:10 ProperNoun joined 02:14 ProperNoun left 02:15 jgaz joined 02:17 ProperNoun joined, monkey_ left 02:20 monkey_ joined
[Coke] ended up avoiding the need for the clone entirely by making the object a tad smarter. 03:16
03:20 evalable6 left, linkable6 left, monkey_ left 03:22 evalable6 joined 03:24 dmc00 joined 03:27 monkey_ joined 04:22 linkable6 joined 05:22 quotable6 left, nativecallable6 left, reportable6 left, sourceable6 left, tellable6 left, committable6 left, shareable6 left, notable6 left, unicodable6 left, linkable6 left, coverable6 left, benchable6 left, evalable6 left, bisectable6 left, releasable6 left, bloatable6 left, greppable6 left, squashable6 left, statisfiable6 left, small_petit joined 05:23 coverable6 joined 05:24 shareable6 joined, reportable6 joined, statisfiable6 joined 05:25 linkable6 joined, nativecallable6 joined, quotable6 joined, evalable6 joined
small_petit I don't know if this is the right place.... Please when is Raku supporting mobile applications? It's just a shame that the language that has got things right does not support android, ios, desktop apps as at now. I just keep getting sad every other day. Thanks. 05:28
05:38 small_petit left 05:40 monkey_ left 06:03 reportable6 left 06:04 frost joined 06:23 notable6 joined 06:24 benchable6 joined, tellable6 joined 06:25 sourceable6 joined 07:03 reportable6 joined 07:23 greppable6 joined 07:25 unicodable6 joined, bisectable6 joined 07:26 squashable6 joined 07:35 seednode left 07:36 seednode joined 07:37 gabiruh_ left, gabiruh joined 07:57 frost left
Geth doc: 7648392313 | (Daniel Sockwell)++ (committed using GitHub Web editor) | doc/Type/List.pod6
Remove &eager sub form (#3994)

This removes the &eager sub, which does not seem to exist.
  (There's an .eager method and an eager statement prefix, but no sub)
linkable6 Link: docs.raku.org/type/List 08:02
08:02 linkable6 left 08:05 linkable6 joined 08:06 small_petit joined 08:13 small_petit left 08:24 releasable6 joined, committable6 joined 09:01 jgaz left 09:43 silug left 09:44 silug joined 10:24 atroxaper joined
atroxaper Hello, #raku 10:24
m: multi trait_mod:<is>(Mu:D $m, :$name!) {}; class A is name {}
camelia 5===SORRY!5=== Error while compiling <tmp>
'A' cannot inherit from 'name' because it is unknown.
Did you mean 'Same'?

at <tmp>:1
atroxaper How can I write a trait for a class?
10:31 Sgeo left
Nemokosch Hi 10:40
Thanks for codesections for even caring about my complaint with (@a, @b) on the LHS, also vrurg for the answer under the issue I opened for it 10:41
However, to be honest, I'm a bit disappointed by the lack of attention this draws when this behavior is a top 1 WAT candidate in Raku I have seen so ar 10:42
However, to be honest, I'm a bit disappointed by the lack of attention this draws when this behavior is a top 1 WAT candidate in Raku I have seen so far
And so far the arguments have been anything but convincing
If there are other arguments than "it is already common to do in certain situations", please go ahead and say it 10:44
atroxaper Never mind about my question. It's just Mu:U parameter type. 10:48
10:56 atroxaper left 10:58 MoC joined 11:08 jjido joined 11:23 bloatable6 joined 11:26 abraxxa-home joined 11:54 mscha joined
mscha Is there a way to specify a two-dimensional array of Ints, without fixed boundaries? 11:55
E.g.: my Int @foo[*;*] 11:56
m: my Int @foo[*;*]
camelia Jagged array shapes not yet implemented. Sorry.
in block <unit> at <tmp> line 1
mscha I can do simply: my @foo 11:57
lizmat no, not yet, as the message implied :-)
mscha That works, but I can't declare it as Int then.
OK, thanks, lizmat. I'll stick to "my @foo" then. 11:58
12:02 reportable6 left, reportable6 joined 12:34 jjido left 12:59 mscha left 13:02 jjido joined 13:08 Zero_Dogg joined
Zero_Dogg Is there any quick way to get a filehandle for a Blob object? (usecase: have a Blob from LWP::Simple.get() that I need to pass to Compress::Zlib for decompression, Compress::Zlib throws `No such method 'eof' for invocant of type 'Buf'.`if I provide it with a Buf) 13:10
13:11 jjido left
lizmat hmm... doesn't LWP::Simple provide you with a method to get an IO::Handle compatible object ? 13:12
Zero_Dogg lizmat: not that I'm aware of (and not that I was able locate by skimming through the source) 13:18
lizmat I'm usually using Cro::HTTP::Client nowadys: cro.services/docs/reference/cro-http-client 13:21
I think that has support for decompression built in 13:22
Zero_Dogg Thanks, I'll give that a go. Has something changed with zef recently? It's failing to locate CBOR::Simple (which is an indirect dependency of Cro::HTTP::Client apparently) 13:28
lizmat japhb ^^ ??
Zero_Dogg: perhaps do a "zef upgrade zef", there's been a new release with a lot of fixes 13:29
Zero_Dogg Already have the latest 13:30
lizmat oki 13:31
I'd suggest first installing CBOR::Simple
Zero_Dogg (or so zef says, anyway)
lizmat $ zef --version
is what I have
13:32 monkey_ joined
Zero_Dogg Okay so that's a lot newer than I have 13:32
13:40 Skarsnik joined
Zero_Dogg Outdated distro-provided zef (I thought I had it installed from rakudo-pkg). Replacing it with shiny new one did the trick. 13:43
13:51 aoeuidhtns joined
lizmat cool 13:52
Zero_Dogg Looks like it doesn't decompress though, and also returns a Blob for binary data. 13:56
Solved it with Libarchive::Filter :) 14:01
It accepts blobs 14:02
Skarsnik m: my Array of Int @foo; say @foo.WHAT 14:12
camelia (Array[Array[Int]])
14:15 aoeuidhtns left 14:38 jgaz joined 14:45 monkey_ left 14:59 monkey_ joined
timo m: my @foo is Array of Int; say @foo.WHAT 15:18
camelia (Array[Int])
15:18 monkey_ left
Skarsnik I wonder if there could be a nice way to tell the method FALLBACK to not be called when you misscall something in it (so it's not called again) 15:28
15:29 jgaz left 15:32 atroxaper joined
atroxaper lizmat: Hello. I've write the new blog. I'm thinking to proposal it to the advent. But, as you know, i'm not a native English. Could somebody to edit a google translate version and make the text be more Christmas? 15:33
corwin atroxaper: I bet there are folks here that could help with that! Post your translation here, and let's see! 15:34
atroxaper rakurs-atroxaper-net.translate.goo...x_tr_hl=ru 15:36
merryprog Ack. Russian to English google translate is /really/ bad. 15:37
atroxaper Not always, actually. 15:38
sienet_ja_LSD[m] have you tried this, www.deepl.com/translator
atroxaper Now. As I see, it a little bit better. Anyway, could somebody help me with it? I agree to gift the authorship and the idea of the post :) 15:42
15:45 vodkra left 15:52 vodkra joined 15:55 monkey_ joined
SmokeMachine Will it be called if you “disallow” it on signature? 16:01
m: class A { method FALLBACK(“test”) { say “fallback”; 42 }; A.test; A.something-else 16:03
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3allback”; 42 }; A.test; A.something-else7⏏5<EOL>
expecting any of:
statement end
statement modifier
statement modifier l…
SmokeMachine m: class A { method FALLBACK(“test”) { say “fallback”; 42 }}; A.test; A.something-else 16:04
camelia fallback
Constraint type check failed in binding to parameter '<anon>'; expected "test" but got "something-else"
in method FALLBACK at <tmp> line 1
in block <unit> at <tmp> line 1
tbrowder atroxaper: you could make a provisional entry in the Raku/advent title list for 2021 with a link to the article and need for help. 16:20
16:21 atroxaper left, atroxaper joined 16:23 mathias[m]12 joined
Skarsnik m: class A { method FALLBACK($name) { say $name; self.foo }; A.new.hello; 16:27
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3e) { say $name; self.foo }; A.new.hello;7⏏5<EOL>
Skarsnik m: class A { method FALLBACK($name) { say $name; self.foo }}; A.new.hello;
camelia (timeout)hello
Skarsnik m: class A { method FALLBACK($name) { say $name; self.foo(42, 11) }}; A.new.hello;
camelia hello
Too many positionals passed; expected 2 arguments but got 4
in method FALLBACK at <tmp> line 1
in method FALLBACK at <tmp> line 1
in block <unit> at <tmp> line 1
Skarsnik I am more talking about this, kinda confusing since the error point to FALLBACK again. x) 16:29
16:31 jgaz joined 16:39 monkey_ left 16:42 euandreh joined 16:48 monkey_ joined
Skarsnik I am more talking about this, kinda confusing since the error point to FALLBACK again. x) 16:58
oops x)
Is there a more clever way to get an enum value from a Str representing the key name than ASM65816::AddressingMode(ASM65816::AddressingMode.enums{$/[1]}[0]) ? 17:00
$/[1] contains the enum entry name
17:03 Woodi left
MasterDuke does ASM65816::AddressingMode("string") work? 17:10
17:11 djerius left
MasterDuke m: enum A <B C>; say A("B") # huh, i thought this worked 17:12
camelia No value 'B' found in enum A
in block <unit> at <tmp> line 1
Skarsnik A() expect the value, not the key x)
17:13 djerius joined
MasterDuke m: enum A <B C>; my $b = "B"; say A::<<$b>>.value 17:15
camelia 0
17:21 monkey_ left
Skarsnik Oh thanks :) 17:26
17:28 jgaz left 17:35 monkey_ joined 17:46 monkey_ left, jjido joined 17:55 squashable6 left 17:57 squashable6 joined 18:02 reportable6 left 18:05 reportable6 joined 18:08 Woodi joined 18:26 jjido left, jgaz joined 18:31 monkey_ joined 18:56 jgaz left 19:10 avar left, Skarsnik_ joined 19:12 TempIRCLogger left, jjido joined, Geth left 19:13 abraxxa-home left 19:14 Skarsnik left 19:15 abraxxa-home joined 19:16 avar joined 19:17 vasko left 19:20 monkey_ left 19:22 vasko joined 19:36 atroxaper left 19:53 ggoebel joined
ggoebel I must be missing something obvious, but I can't see it. Anyone willing to look at my nearly identical solutions to today's Advent Of Code puzzles in raku and perl and tell me why the raku one gives incorrect answers? 19:55
raku: gist.github.com/ggoebel/f06857bd3b...433f1e2c1f
evalable6 (exit code 1) Failed to open file /home/bisectable/git/whateverable/input: No such file or directory
in block <unit> at ./sandbox/05.raku line 3
ggoebel perl: gist.github.com/ggoebel/0dff89aa09...6a4a4110f3
vasko I'd look but I haven't done challenge 5 yet myself :P 19:57
[Coke] style note, you don't have to () the for or if params.
ggoebel coke: perl habits die hard :-) 19:58
gfldex style note, %grid{$x1}{$y} is equivalent to %grid{$x1;$y} 19:59
vasko gfldex Is the same true for arrays? 20:00
gfldex yes
ggoebel noted thx
vasko Cool, I only found out about multi-dim arrays yesterday and thought they were a different beast. 20:01
I'm eagerly anticipating the addition of ragged arrays and views.
gfldex A SemiList is a general concept in Raku.
m: @a = (1,2;3,4); dd @a; 20:02
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@a' is not declared
at <tmp>:1
------> 3<BOL>7⏏5@a = (1,2;3,4); dd @a;
[Coke] multi dim is different, yes
gfldex m: my @a = (1,2;3,4); dd @a;
camelia Array @a = [(1, 2), (3, 4)]
vasko Btw, I'm learning raku with AoC and am wondering how to make my $verbose arg from main global neatly. Anything better than `my $VERBOSE; sub MAIN(Bool :v(:$verbose)) { $VERBOSE = $verbose }`?
gfldex call it $*VERBOSE 20:03
ggoebel m: my @a = (1,2;3,4); @a[0;0]=5; .raku.say
camelia Cannot modify an immutable List ((1 2))
in block <unit> at <tmp> line 1
20:03 monkey_ joined
ggoebel so I guess I couldn't have used ++%grid{$x1;$y} 20:05
gfldex that works because $x1 and $y are containers.
ggoebel Cannot resolve caller prefix:<++>(List:D); the following candidates 20:07
match the type but require mutable arguments:
(Mu:D $a is rw)
gfldex vasko: if you want to go fancy on dynvars, this might help: gfldex.wordpress.com/2020/08/17/de...or-dynvar/
[Coke] so, the bug is in the second half (answers for part 1 are correct)
ggoebel I don't get the correct answer for part one when using my input... I do when using the example input 20:08
just a sec, I'll share my input
vasko gfldex: Thanks! I think `say $foo if $*verbose;` is quite neat. :) 20:09
ggoebel input: gist.github.com/ggoebel/d0417c4100...942c6547c5
[Coke] er, sorry. 20:10
gfldex vasko: I would stuff the check against $*verbos into a `sub debug(|c) { say(|c) if $*verbose }` .
[Coke] if you print out the "diag" coordinates it's looping over, they don't look right.
on the real input, first line, it swaps the coordinates, then is incrementing x by 10? 20:11
try making sure you're working with numbers and not strings, I think. 20:12
gfldex ggoebel: did you consider to have a type constraint in line 10? `my (Int:D $x1, Int:D $y1, Int:D $x2, Int:D $y2)` might catch mistakes.
[Coke] afk
20:13 Sgeo joined
vasko gfldex: What's the most idiomatic way to make it support calls as`debug 2, "Only print if -v 2 is set"`? 20:15
I can't find the docs for the `|c` annotation.
ggoebel I changed line 10 to: my ($x1, $y1, $x2, $y2) = .split(/\D+/, :skip-empty).map({+$_});
gfldex vasko: docs.raku.org/type/Signature#Capture_parameters
ggoebel and that fixed it...
thanks! 20:16
vasko Thanks, can I combine that with an optional `Int` infront of it?
I guess the multi signatures is what I want.
gfldex well, you have to do a sub signature then.
ggoebel Still a bit surprised $x1 .. $x2 was incrementing x by 10 20:17
hmm... $x1 .. $x2 -> $x was not incrementing x by 10. So I'm still not understanding how forcing numeric context fixed it. 20:20
gfldex vasko: gist.github.com/9c317047a1cabafcdc...98a76425e7 20:21
vasko: you just made me find an ENODOC :) 20:23
two ENODOCs acutally
well, I better check roast before I accuse to docs of incompleteness …
ggoebel what is perl automagically doing that I take for granted that raku is not? 20:28
vasko Thanks, I got that bit, but I want to have it take a level as well. 20:29
I guess I can just check `|c` is a Seq and then test if `|c[0]` is an Int, then `say(|c[1..]) if $*VERBOSE >= |c[0]`? 20:30
ggoebel vasko: not sure if this is what you're looking for... docs.raku.org/language/operators#prefix_| 20:32
vasko I think I'll settle for `sub verbose(:$n = 1, |c) { say(|c) if $*verbose >= $n }` so I can do `verbose :n(3), 'Only print this if the program is called with -v=3 or more'` 20:35
gfldex vasko: you can have a `sub MAIN(:v($*VERBOSE), :D(:debuglevel(*$DEBUG-LEVEL)) = 1) {}` 20:50
MasterDuke .tell atropaxer gist.github.com/MasterDuke17/b9ff1...a70ef2eca7 is a lightly edited version, it really didn't need a whole lot 20:52
tellable6 MasterDuke, I haven't seen atropaxer around, did you mean atroxaper?
MasterDuke .tell atroxaper gist.github.com/MasterDuke17/b9ff1...a70ef2eca7 is a lightly edited version, it really didn't need a whole lot
tellable6 MasterDuke, I'll pass your message to atroxaper
20:59 discord-raku-bot left 21:00 discord-raku-bot joined 21:06 jjido left 21:14 nebuchadnezzar left 21:26 jjido joined
vasko ggoebel I just ran into the same problem :D 21:29
> ("123".."234").map: *.say
Is why it was failing. I personally went for `.map: *.Int` I feel your way is to perly :P 21:30
21:44 jjido left
ggoebel vasko: thanks! So raku supports str ranges. Though I have to say, I don't understand how they work. 21:52
m: ("12".."21").flat.say
camelia (12 11 22 21)
ggoebel m: ("12".."19").flat.say
camelia (12 13 14 15 16 17 18 19)
MasterDuke ranges operated by calling .succ docs.raku.org/routine/succ#(Str)_method_succ 21:54
gfldex vasko: Why so verbose? `».Int` will cut it! :-> 21:55
vasko gfldex I'm still learning. Cool, any time I would want to use `.map` over `»`? 22:01
gfldex It's a hyper ans as such a candiate for auto-threading. Beside that, it's just shorter for simple cases. 22:02
ggoebel MasterDuke: thanks for the link to the relevant docs. Maybe I'm being dim, but I still don't understand how "12".."21" increment steps result in (12 11 22 21)
"Ranges always go from small to larger elements; if the start point is bigger than the end point, the range is considered empty." 22:03
gfldex m: say ('filename-aaa.txt' .. 'filename-zzz.txt')[1..10, 900..910];
camelia ((filename-aab.txt filename-aac.txt filename-aad.txt filename-aae.txt filename-aaf.txt filename-aag.txt filename-aah.txt filename-aai.txt filename-aaj.txt filename-aak.txt) (filename-biq.txt filename-bir.txt filename-bis.txt filename-bit.txt filename-…
ggoebel how is "11" a larger element than "12"
gfldex that's what it's meant to be used for
MasterDuke m: say "12".succ 22:04
camelia 13
MasterDuke m: .say for "12".."21"
camelia 12
22:04 jjido joined
MasterDuke that's...interesting 22:04
gfldex You are iteration over a subset of ASCII, so to speak.
MasterDuke well, it's been that was since the initial christmas release. raku does str incrementing/ranges differently than perl, but i can't quite explain that result right now 22:06
22:08 RakuIRCLogger left, Geth joined, RakuIRCLogger joined 22:10 TempIRCLogger joined
ggoebel per Coke and gfldex's suggestions, I'll just have to remember coerce things into Ints to avoid character ranges. 22:12
I think I prefer changing line 10 to: my (Int(Str) $x1, Int(Str) $y1, Int(Str) $x2, Int(Str) $y2) = .split(/\D+/, :skip-empty); 22:14
more verbose, but hard to get confused about what's going on 22:15
thanks for all the help
22:25 jjido left 22:34 MoC left
tbrowder why not use 12..21 if that’s what you intend? 22:36
gfldex He does now. That's where the bug was. 22:37
22:58 monkey_ left 23:19 ggoebel left 23:35 ggoebel joined 23:40 Skarsnik_ left