🦋 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:00 stoned75 joined
melezhik .tell tony-o please take a look at this - github.com/tony-o/raku-fez/pull/15 , thanks 00:06
tellable6 melezhik, I'll pass your message to tony-o
00:11 lucasb left 00:12 benjif left
notagoodidea using JSON::Fast, the to-json function is particurly slow (even with :!pretty). 00:12
Is there a alternative to manage large JSON files? 00:13
moon-child notagoodidea: wrt libclang, not writing a native c parser with a raku grammar seems like a missed opportunity 00:14
(though maybe that needs more perf work yet; as I recall, somebody was trying to express a c++ grammar in raku and it took several minutes to parse a simple function declaration) 00:15
notagoodidea And following the various #include to parse too can be hell.
I will first try to port this github.com/floooh/sokol/tree/bindgen/bindgen to Raku 00:16
elcaro notagoodidea: There is JsonC... but if I recall comments about it, perf still leaves a little to be desired
notagoodidea From json spit by clang, filtering it and producing NativeCall from the cleaned json like floooh did for zyg. 00:17
moon-child yeah preprocessor is a pain
elcaro the parsing is faster, but the conversion from C to Raku data structure is a tad slow
moon-child notagoodidea: but, in raku you can already modify the parser over the course of a running program. Idk how that works but presumably you could do the c preprocessor in the same way
notagoodidea Will see because to-json is running on my computer for the last 10 minutes :)
(the JSON provided is big) 00:18
moon-child notagoodidea: afaik the sokol bindgen stuff relies on specific annotations in the sokol headers. So you wouldn't be able to use it for any other library 00:19
notagoodidea 165302 lines.
ah. 00:21
will try at least for the simplified json output from the clang dump. 00:22
moon-child: Leveraging grammer will be nice but I am not sure that will happen soon, performance wise. 00:26
I am not sure that even parsing JSON with grammar will be that performand (JSON::Fast goes straight for nqp)
moon-child :/ 00:27
notagoodidea And it will be a pain to use because it convert the JSON to a Str :/ 00:28
JsonC converts to a hash, that would be easier. 00:29
melezhik .tell tony-o I've added integration test for `fez meta` 00:30
tellable6 melezhik, I'll pass your message to tony-o
melezhik 161.35.142.50/report/fez-test/276
.tell tony-o maybe I should push all the tests to fez repo? i don't know ... 00:31
tellable6 melezhik, I'll pass your message to tony-o
notagoodidea Forget it, JsonC does not pass his test and zef refuse to install :/ 00:32
00:32 stoned75 left 00:41 benjif joined 00:46 pecastro left 00:53 oddp left 00:56 notagoodidea left 01:06 stoned75 joined 01:20 squashable6 left 01:21 jmchael left 01:23 squashable6 joined 01:35 mowcat left 01:41 melezhik left 01:42 stoned75 left 02:19 Ben_Goldberg joined, BenGoldberg left 02:20 Ben_Goldberg is now known as BenGoldberg 02:41 kvw_5 joined 02:45 kvw_5_ left 03:05 Sgeo_ joined 03:08 Sgeo left 03:22 benjif left 03:25 melezhik joined
melezhik . 03:25
.tell tony-o I put fez-test sparky configuration - github.com/melezhik/sparky-playgro...n/fez-test so far ... cc tib 03:26
tellable6 melezhik, I'll pass your message to tony-o
03:41 melezhik left 04:41 sourceable6 left, greppable6 left, evalable6 left, unicodable6 left, committable6 left, bloatable6 left, linkable6 left, coverable6 left, benchable6 left, squashable6 left, nativecallable6 left, tellable6 left, bisectable6 left, shareable6 left, statisfiable6 left, quotable6 left, notable6 left, releasable6 left, sourceable6 joined 04:42 greppable6 joined, nativecallable6 joined, statisfiable6 joined, bloatable6 joined, quotable6 joined, evalable6 joined, unicodable6 joined, tellable6 joined, benchable6 joined 04:43 shareable6 joined, coverable6 joined, committable6 joined, notable6 joined 04:44 linkable6 joined, releasable6 joined, squashable6 joined, bisectable6 joined 05:19 BenGoldberg left 05:26 hippo_ joined, epony left 05:27 epony joined
lucs Just saw about raku.land 05:31
Nice
Not sure why they're called "distributions" though.
Not "modules"? 05:32
05:37 brtastic joined 05:54 kst joined, kst left 05:55 kst joined 06:02 melezhik joined
melezhik lucs not a big difference on my view.  distribution is a certain version of a module ... something ... 06:04
I really like this page - raku.land/recent - a kind a trend of what's going on ... 06:05
06:08 melezhik left 06:11 jmerelo joined
lucs jmerelo: Good morning. 06:12
Having fun in the snow? 06:13
melezhik: Yeah, makes sense. Just not used to that term I guess. 06:14
tellable6 lucs, I'll pass your message to melezhik
jmerelo lucs: not down here, in Granada... 06:30
Not too far away, anyway. 06:31
lucs Aw, too bad, snow is nice (sometimes) ;) 06:33
06:33 rindolf joined
lucs Actually, I didn 06:33
't read up much on what happened. 06:34
I guess it must be pretty hard when you're not prepared for it.
06:35 wamba joined 06:42 parabolize left 06:44 jmcgnh joined 06:55 aluaces joined
jmerelo lucs: it's nice if you're warm and chill... I'm telecommuting these days, so... 06:58
lucs jmerelo: I grew up playing in the snow (winters, that is), which was nice. 07:01
As an adult, not so much :)
Warm++
jmerelo lucs: not so usual where I lived. Just the cold and the chilblains. Even in Granada, it's an once every five years event. 07:02
not so usual in Madrid, either. Some people are having the time of their lives. Some are just having the most miserable time of their lives. 07:03
I lived in Úbeda, north of Granada, a small town which is 700 meters high. But Jaén and Granada are too dry, so rain is unusual
Xliff m: multi sub trait_mod:<is> (Method $m, :$query!) { my $r = $m; $m.wrap(-> |c { say 'Hi!'; nextsame; }); }; class A::B { method b is query { say 'B'; }; };
camelia ( no output )
jmerelo lucs: where did you live?
Xliff m: multi sub trait_mod:<is> (Method $m, :$query!) { my $r = $m; $m.wrap(-> |c { say 'Hi!'; nextsame; }); }; class A::B { method b is query { say 'B'; }; }; A::B.new.b 07:04
camelia Hi!
Attempt to return outside of immediately-enclosing Routine (i.e. `return` execution is outside the dynamic scope of the Routine where `return` was used)
in block at <tmp> line 1
in block <unit> at <tmp> line 1

B
lucs jmerelo: In Montréal
Xliff m: multi sub trait_mod:<is> (Method $m, :$query!) { my $r = $m; $m.wrap(method (|c) { say 'Hi!'; nextsame; }); }; class A::B { method b is query { say 'B'; }; }; A::B.new.b
camelia Hi!
B
lucs (Still there)
Xliff Wow. That doesn't work on my version of Raku.
m: $*PERL.compiler.version.say
camelia v2020.12.42.gd.53.a.92733
jmerelo lucs: makes sense, then. 07:05
Xliff: what didn't work? 07:06
Xliff m: multi sub trait_mod:<is> (Method $m, :$query!) { my $r = $m; $m.wrap(method (|c) { say 'Hi!'; nextsame; }); }; class A::B { method b is query { say 'B'; }; }; A::B.new.b 07:10
camelia Hi!
B
Xliff ^^
I get a 'Cannot invoke this object' error, locally.
I'm on the same version as Camelia. 07:11
jmerelo Xliff: from the REPL? 07:12
Xliff rak?
What REPL?
No, I'm running that from the command line.
I thought I had found a bug, and now it's looking to be environmental. Which is .... ODD 07:13
jmerelo Xliff: Ah, OK. The REPL might behave in a different way. Maybe it's just a new goodie in HEAD
Xliff: give committable a try
Xliff No. It's not a problem here.
I was hoping I could replicate it HERE.
I cannot. 07:14
It even works on repl.it
07:20 aborazmeh joined, aborazmeh left, aborazmeh joined 07:24 sjm_uk joined
Xliff jmerelo: FINALLY! 07:24
See repl.it/@Xliff/SorrowfulFlawedMicr...#main.raku
The compunit is the problem. Somehow the compunit is corrupting things. What I'm attempting works just fine when it's in MAIN:: 07:25
And with that, I must crash and ZZZZZ
07:27 ufobat__ joined
jmerelo Xliff: have a good night sleep :-) 07:29
Xliff tanks! ;) 07:32
07:32 Xliff left 07:40 aborazmeh left, aluaces left 07:59 sena_kun joined 08:05 domidumont joined 08:09 MasterDuke joined 08:10 BenGoldberg joined, aluaces joined 08:14 stoned75 joined
stoned75 nef 08:16
08:27 notagoodidea joined, Manifest0 left 08:30 Manifest0 joined 08:33 cgfbee left 08:34 Sgeo_ left 08:35 notagoodidea left 08:38 cgfbee joined
xinming_ SmokeMachine: is it possible to completely delete the optimizer in Red? 08:38
SmokeMachine Not currently, but that’s easy to change... why? Is it giving you problems? 08:39
xinming_: just need to not run this: github.com/FCO/Red/blob/master/lib/Red.pm6#L36 08:41
08:44 notagoodidea joined
notagoodidea moon-child: I found this "old" perl6 module by azawawi (github.com/azawawi/p6-libclang) that wrap libclang. And after a deep look at the sokol bindgen, there is nothing that specific. 08:54
the main problem is for now the JSON parsing. I have to try different modules available and worst case scenario use jq for that part. 08:55
or accept the JSON as string and try to parse with a grammar or whatnot. 08:57
MasterDuke notagoodidea: timotimo works on json::fast, he might have a suggestion 09:02
09:03 pecastro joined 09:06 dakkar joined 09:07 notagoodidea left 09:15 ufobat joined 09:17 aborazmeh joined, aborazmeh left, aborazmeh joined, ufobat__ left 09:21 JRaspass joined 09:23 tejr left 09:32 notagoodidea joined 09:36 sno left 09:39 Xliff joined 09:42 aborazmeh left 10:25 jmchael joined
lizmat clickbaits rakudoweekly.blog/2021/01/11/2021-...new-stuff/ 10:33
10:34 cono joined
cono p6: class { has %!h = a => 42; submethod BUILD() { %!h.say } }.new 10:34
camelia {}
tadzik BUILD is funny like that 10:35
p6: class { has %!h = a => 42; submethod TWEAK() { %!h.say } }.new
camelia {a => 42}
cono p6: class { has %!h = a => 42; submethod BUILD() { %!h.say }; method g { %!h.say } }.new.g
camelia {}
{}
cono why I don't see it in method g? 10:36
tadzik becuase your BUILD breaks attribute initialization 10:37
it's not like Moose's BUILD, if you're familiar with that one, it does a bit more and it's often confusing, that's why TWEAK came to be 10:38
I wish I could tell you exactly what BUILD does and how to make it do what you need, but I just hate it, not understand it and never use it :P
but generally BUILD is the bit responsible for setting attribute values, so if you define your own BUILD then it's up to you to set them 10:39
cono oh 10:43
I thought BUILD's responsibility is only to set values passed by the arguments. But looks like assigning them in class, also done in BUILD
complex 10:44
thanks for explanation! tadzik++
tadzik you're welcome, I hope I got it right :P 10:45
notagoodidea I don't understand something. Using only JSON::Fast from-json and to-json, the to-json function is super slow. Same json file but using JSON::simd to load and to-json again from JSON::Fast to dump is super fast.
is due to the fact that JSON::simd create a raku hash instead of a string for the load? 10:46
lizmat notagoodidea: which version of JSON::Fast do you have ? 10:48
notagoodidea I just installed yesterday with zef, let me check. 10:51
0.15
the JSON provided is ~160K lines (it is a dump from clang ast of curl.h) 10:54
lizmat ok, then I don't think I have any suggestions to make things faster in the short term 10:56
notagoodidea With JSON::simd for loading and JSON::Fast for dumping, it is fast enough. 10:58
Using only JSON::Fast, loading is fast but dumping is really slow.
my guess is the from-json from Fast output a Str instead of a Hash and to-json have a bad time with it. 10:59
11:08 abraxxa1 left, abraxxa1 joined 11:12 PimDaniel joined
PimDaniel Hi! everybody's waked up? 11:13
Ok, i'll start with a simple question:
what's the difference between : my @l = <1, 2, 3>; and my @l = 1, 2, 3; ? thank's! 11:15
MasterDuke `<> ` in this case is a quoting construct
that automatically splits on whitespace 11:16
PimDaniel so my syntax is wrong : i do not have the ,
my @l = <1 2 3>; 11:17
11:17 thdrmz left 11:18 thdrmz joined
MasterDuke that'll create an array of strings (which in this case will actually be IntStrs, since they "look" like numbers) 11:18
11:18 sno joined
MasterDuke m: dd <1 2 3>; dd 1, 2, 3 11:19
camelia (IntStr.new(1, "1"), IntStr.new(2, "2"), IntStr.new(3, "3"))
1
2
3
11:20 asymptotically left
PimDaniel MasterDuke : thank you , i'm looking at docs.raku.org/language/quoting 11:20
11:22 PimDaniel left
notagoodidea ok thinks are getting weirder 11:26
MasterDuke pages Dr. Freud 11:28
notagoodidea `use JSON::Fast; my \x = slurp("curl-test.json") ==> from-json; my \xo = to-json x;` runs in
605sec 11:29
idem if you swap `use JSON::Fast` by `use JSON::simd :subs;` 11:30
11:30 Altai-man joined 11:32 sena_kun left
tadzik I guess it's the to-json that's slow, not the from-json, and JSON::simd just uses JSON::Fast's to-json()? 11:36
from JSON::simd's docs: As an added bonus, this also imports to-json from JSON::Fast, which works exactly as usual 11:37
notagoodidea yes but 11:38
'use JSON::simd; use JSON::Fast; my $json = JSON::simd.new; my \x = $json.load: "curl-test.json"; my \xo = to-json x;'
runs in
4.6s 11:39
11:39 aluaces left
notagoodidea I think that the from-json imported with :subs respects the interface of JSON::Fast by providing a Str 11:41
11:42 Toilie is now known as dudz 11:43 dudz left, dudz joined 11:45 Black_Ribbon left
notagoodidea tadzik: yep it returns a Str and when used the OO way it returns a Hash. to-json is fast with a hash and slow with a Str. 11:48
or I messed something with the feed operator in the declaration? 11:49
yep it is on me. 11:51
with the feed operator, the subs from JSON::simd runs in the time that the OO approach. 11:52
is there a precedence with assignement vs feed operator? 11:53
m: my $x = "foo" ==> map *.uc; say $x; 11:59
camelia foo
MasterDuke m: my $x = do "foo" ==> map *.uc; say $x; 12:01
camelia (FOO)
tadzik wait, what 12:03
if something returns a Str from JSON parsing, is it even parsing it at all? 12:04
dakkar sure, `"foo"` is a valid JSON-encoded string value
(but I think that's not the issue here) 12:05
notagoodidea tadzik: I will test without my mistake to check what JSON::Fast returns
tadzik dakkar: it's valid, yeah, but if I think if one parsing method returns a Hash and another returns a Str then at least one of them is wrong :P 12:06
notagoodidea tadzik: it returns an Hash
tadzik for some value of wrong anyway... github.com/qntm/fastjson
notagoodidea The mistake is on me by using the feed operator in the assignement 12:07
MasterDuke would it be too snarky to say it seems to me that much of npm would belong in the Acme:: namepace in CPAN? 12:09
notagoodidea and Fast is the fastest
lizmat: in case of, the problem was pebak not JSON::Fast 12:10
lizmat *phew* :-) 12:12
12:12 aborazmeh joined, aborazmeh left, aborazmeh joined
tadzik MasterDuke: I just assume everything on npm is sarcastic :P 12:15
12:20 PimDaniel joined
PimDaniel Hi! 12:20
Modify array by ref with a sub: 12:21
look a my piece of code : pastebin.com/8Tc463py
In Perl5 it was bad to use $_ unless we declared it local. 12:22
Is it safe tu use $_ in a for loop in raku like i did with sub b(@r) {...} in my paste_bin given example? 12:23
if no : could we declare loop variable -> $e as rw? 12:24
12:29 aborazmeh left 12:30 BenGoldberg left, Ben_Goldberg joined, Ben_Goldberg is now known as BenGoldberg
PimDaniel Thank's in advance! 12:33
moritz you can use for @a <-> $n { $n = 42 } 12:35
or
for @a -> $n is rw { $n = 42 }
12:37 codesect` joined 12:39 codesections left
PimDaniel moritz : thank your very mutch! 12:39
12:45 PimDaniel left 12:47 aborazmeh joined, aborazmeh left, aborazmeh joined 12:59 aluaces joined 13:07 k-man left 13:18 k-man joined 13:29 notagoodidea left 13:51 dakkar left, aborazmeh left 13:55 dakkar joined 13:57 domidumont left 14:03 thdrmz left 14:15 vrurg joined 14:20 thdrmz joined 14:21 aborazmeh joined, aborazmeh left, aborazmeh joined 14:27 notagoodidea joined 14:38 MasterDuke left 14:39 parabolize joined 14:58 rindolf left 15:03 wamba left 15:05 codesect` left 15:06 MasterDuke joined, codesections joined 15:13 rindolf joined
Xliff OK, how is this for weirdness? 15:14
repl.it/@Xliff/SorrowfulFlawedMicr...#main.raku 15:15
This REPL illustrates a problem that's been driving me batty.
The same piece of code is executed. One via MAIN:: the other via a class in another compunit.
The MAIN:: code runs fine. It craps out when it's in a compunit. 15:16
"Help!" he says!
15:16 cpan-raku left 15:17 cpan-raku joined, cpan-raku left, cpan-raku joined 15:20 Sgeo joined 15:30 sena_kun joined 15:32 aborazmeh left, Altai-man left 15:36 aborazmeh joined, aborazmeh left, aborazmeh joined 15:41 aborazmeh left 15:53 aborazmeh joined, aborazmeh left, aborazmeh joined 16:03 aborazmeh left 16:08 domidumont joined
Xliff Can you get the instance of an object from one of its Methods? 16:11
16:12 atroxaper joined
atroxaper Hi, #raku 16:12
moritz Xliff: no, methods are generally not bound to instances (unlike in, say, python) 16:13
atroxaper Am I right that wrap method do not change the Signature? What if I want to change it any way? Is it possible?
Xliff moritz: Ah, thanks. 16:14
moritz: OK, how about this. Can an inner-sub gain access to class attributes somehow? 16:15
m: class A { has $!a; sub b { say $!a }; method c { b } }; A.new(a => 42).c
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable $!a used where no 'self' is available
at <tmp>:1
------> 3class A { has $!a; sub b { say $!a7⏏5 }; method c { b } }; A.new(a => 42).c
16:15 thdrmz left
Xliff Yeah. Figured that. 16:15
Barring that... class defined traits. :/ 16:16
moritz well, you could put sub b inside method c
then it gets self as an outer lexical 16:17
or you could pass in `self` explicitly
m: class A { has $!a; sub b(self) { say $!a }; method c { b } }; A.new(a => 42).c
camelia 5===SORRY!5=== Error while compiling <tmp>
Invalid typename 'self' in parameter declaration.
at <tmp>:1
------> 3class A { has $!a; sub b(self7⏏5) { say $!a }; method c { b } }; A.new(a
Xliff Yeah, but I am trying to apply trait mods to methods, but the trait would need access to the object.
moritz m: class A { has $!a; sub b(\self) { say $!a }; method c { b } }; A.new(a => 42).c 16:18
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable $!a used where no 'self' is available
at <tmp>:1
------> 3lass A { has $!a; sub b(\self) { say $!a7⏏5 }; method c { b } }; A.new(a => 42).c
Xliff So... more like: class A { method b is blah { ... } };
moritz Xliff: well, then `self` is the first argument passed to that method
and you trait then needs to go through that
and possibly the MOP
Xliff So.... 16:19
If I wrap a method, I could maybe do... 16:20
$m.wrap(sub (|c) { c.list[0] # instance? })
moritz or just $m.wrap(sub (\SELF, |c) { SELF is invocant here }) 16:21
16:21 _jrjsmrtn joined
Xliff Cool! 16:21
16:23 __jrjsmrtn__ left
notagoodidea how to I test a type of a variable? 16:28
MasterDuke $foo ~~ Str 16:29
notagoodidea m: my $foo = Any; say $foo.^name =:= Any;
camelia False
notagoodidea m: my $foo = Any; say $foo.^name ~~ Any;
camelia True
notagoodidea thanks! 16:30
Xliff Perl guru help here, pls. 16:40
repl.it/@Xliff/SorrowfulFlawedMicr...#main.raku
Why does the code in MAIN:: work, but the code from the compunit bomb? 16:41
jdv79 notagoodidea: there's a module for the fastest, or it was, json lib somewhere 17:08
its limitting factor is the c/raku marshalling iirc
17:08 asymptotically joined
jdv79 but it has some opti for certain cases to ameliorate that 17:09
notagoodidea Json::Fast is good in enough for now, crunching load and dump under
2s
I think my filter and extract methods will take more time. 17:10
17:10 tejr joined
jdv79 ah, you found it - JSON::simd 17:10
backlogging and skipped a bit:( 17:11
cool
notagoodidea no trouble. I don't think that I may leverage the delay args from simd so Fast is faster due to the C/raku marshalling on a big json, afaik 17:12
m:say Hash ~~ Any 17:14
evalable6 True
notagoodidea m: say Any ~~Hash; 17:16
camelia False
notagoodidea That was confusing.
17:16 b2gills left, Kaiepi left
atroxaper Xliff: I have fixed your code. But I don't know how to share it in relp.it ^^ 17:23
[Coke] can always post in gist.github.com - what was the fix?
tellable6 2021-01-11T06:12:48Z #raku <jmerelo> [Coke] thanks!
atroxaper [Coke]: Oh, sure. Thanks. 17:27
Xliff: gist.github.com/atroxaper/5b450550...f74e3af844 see my comments
17:32 guifa joined, wamba joined 17:34 MasterDuke left 17:37 dakkar left 17:38 b2gills joined, notagoodidea left 17:45 lucasb joined 17:46 Kaiepi joined
Xliff atroxaper: Thanks! What was the problem? 17:47
OK, I see. Still... isn't it LTA to have to create a sub and "use soft"? 17:49
atroxaper Xliff: actually, I don't know. They said, that wrap is mostly untested part of Rakudo... Probably, GC clears the anon sub.
Xliff OK. Thanks. Now to see if your solution works in the larger piece of code. Thanks! 17:50
atroxaper Xliff: you do not have to use 'use soft'. It was my mistake. 17:51
Xliff: You're welcome :)
Xliff One other thing... using it in a sub like this means I lose access to the Method object.
Any ideas on how to get that into the sub?
So I need access to \m in foo
Hummm.... maybe... 17:52
nextcallee?!? 17:53
I finally found a use for that! LOL!
atroxaper Xliff: Oh! Great find :) 17:55
guifa lucs: the reason for calling them distributions is that a distribution can (and often does) contain multiple modules 17:59
Xliff *sigh* -- still breaks in orignial code with "Cannot invoke object with invocation handler in this context" 18:00
18:09 natrys joined
[Coke] .seen codesections 18:35
tellable6 [Coke], I saw codesections 2021-01-10T19:50:55Z in #raku: <codesections> will do :)
18:37 dazage joined 18:39 dazage left
atroxaper Xliff: Probably this will lead to the right thoughts. Maybe you do not need an access to the method in foo. gist.github.com/gfldex/22f9133dbdb83c21c8e4 18:40
Xliff: perl6advent.wordpress.com/2015/12/...d-methods/
lucs guifa: Aha, makese sense. Thanks. 18:42
tony-o 2.
tellable6 2021-01-12T00:06:19Z #raku <melezhik> tony-o please take a look at this - github.com/tony-o/raku-fez/pull/15 , thanks
2021-01-12T00:30:15Z #raku <melezhik> tony-o I've added integration test for `fez meta`
2021-01-12T00:31:24Z #raku <melezhik> tony-o maybe I should push all the tests to fez repo? i don't know ...
2021-01-12T03:26:40Z #raku <melezhik> tony-o I put fez-test sparky configuration - github.com/melezhik/sparky-playgro...n/fez-test so far ... cc tib
tony-o .tell melezhik you're welcome to push tests. #15 is merged 18:43
tellable6 tony-o, I'll pass your message to melezhik
18:44 cpan-raku left
[Coke] did the behavior of chdir in rakudo change in the past few months? 18:46
based on behavior of a raku/doc xt/ test, it looks like it might have previously been lexically scoped? 18:47
Geth doc: coke self-assigned xt/check-signatures.t skips all tests github.com/Raku/doc/issues/3765
7e96ae04e5 | Coke++ | xt/check-signatures.t

Without this fix, recent rakudos were looking in the RAKUDO_SRC dir (post chdir)
Fixes #3765
18:49
linkable6 DOC#3765 [closed]: github.com/Raku/doc/issues/3765 [docs] xt/check-signatures.t skips all tests
18:51 jmerelo left
atroxaper Am I right that wrap method do not change the Signature? What if I want to change it any way? Is it possible? 18:52
[Coke] codesections: fixed #3765; now left with a single failure running the signature test. 18:55
18:56 domidumont left, natrys left 18:57 notagoodidea joined
guifa atroxaper: yes and no. wrap can wrap with any new signature, but it’s possible the compiler will be overly strict at compile time and think it impossible 18:59
So if the original sub has both slurpies on it, you can do anything you want. If the original only takes a single positional, you’ll probably be unfortunately stuck with the single positional (but named arguments should genreally work) 19:00
atroxaper guifa: It fails in runtime, actually.
guifa odd, when I get issuse with it, it’s always compile time
Geth ¦ doc: coke assigned to codesections Issue check-signature test cannot find some method definitions. github.com/Raku/doc/issues/3780 19:01
guifa m: sub foo($a) { say $a }; &foo.wrap: -> $a, $b { samewith $a }; foo 1, 2;
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling foo(Int, Int) will never work with declared signature ($a)
at <tmp>:1
------> 3; &foo.wrap: -> $a, $b { samewith $a }; 7⏏5foo 1, 2;
19:02 sortiz joined
atroxaper guifa: Oh... Apparently, I was wrong. 19:02
guifa: I just thinking for fun... Could I implement something similar as Python's decorators. They take a sub and return a 'wrapped' sub to original name. 19:07
19:07 cpan-raku joined, cpan-raku left, cpan-raku joined 19:10 natrys joined
guifa I’m not familiar enough with Python to know the difference between that and wrapping. Wrapping has global effect, so you could write a sub that takes another one as an argument, and in turn wraps it. 19:15
m: sub foo { say "hi" }; sub wrap-me(&f) { &f.wrap: sub { callsame; say "bye" } }; foo; say "---"; wrap-me &foo; foo;
camelia hi
---
hi
bye
guifa If you want to return a sub while preserving the original, you don’t need to use wrap, just return a code block of some sort: 19:18
sub foo { say "hi" }; sub wrap-me(&f) { sub {f; say "bye"} }; foo; say "---"; my &bar = wrap-me &foo; bar
evalable6 hi
---
hi
bye
atroxaper guifa: Yes, I know that. Thank you for examples :) 19:20
notagoodidea is it a sane way to loop around elements of hash containing arrays containg hashes etc for which I don't know the depth? 19:22
it's coming from a JSON. The keys of the hash are the same at differents depth.
19:30 Altai-man joined
Geth ecosystem: 4de08385a4 | (David Warring)++ | META.list
move remaining modules from the pdf-raku project to CPAN
19:31
19:32 sena_kun left
guifa notagoodidea: sure, depending on the exact structure you can go about it different ways 19:34
my @a = 1, 2, [1,2,3]; for @a -> $b { .say for $b<> } 19:35
evalable6 1
2
1
2
3
notagoodidea the structure could be now at runtime by testing a bit. 19:36
The two elements that I know : I need to follow the key `inner` to go deeper in the structure, and at the last level of depth I will find a key `name`. 19:38
Each time the `inner` key contains an array that contains the next hash. 19:39
mm I could use loop or until ..
19:39 BenGoldberg left, Ben_Goldberg joined, Ben_Goldberg is now known as BenGoldberg 19:43 atroxaper left 19:48 ufobat left, b2gills1 joined, b2gills left 19:53 PimDaniel joined
PimDaniel hi, this is me again. 19:54
I'm reading docs.raku.org/language/packages and docs.raku.org/language/modules and docs.raku.org/language/modules-packages. 19:56
19:57 wamba left
PimDaniel and i do not understand the relationship between package and modules. Probably the language does not bind my brain! 19:57
I mean "English language". 19:58
guifa A package is just a way to collect variables/subroutines/etc. Classes are also packages, for instance.
19:59 tejr left
PimDaniel @guifa thank you! So what is a module? 20:00
guifa A module is type of package specially designed for importing symbols (variables, subroutines, settings, etc) into code 20:01
PimDaniel @guifa : Merci! Physically, suppose i want to write a Module... is it the same than in perl5? 20:04
What is the file extension i should use?
I do not see this in the documentation. 20:05
hooo : Chapter "Modules on disk" : Sorry! :(
20:09 tejr joined
guifa is afk for a bit 20:09
20:10 Black_Ribbon joined
PimDaniel Does unit means namespace? 20:11
No No : sorry! 20:13
@guifa : Ok : i see clearly now: thank you very mutch! 20:21
20:26 JRaspass left, JRaspass joined, PimDaniel left 20:27 JRaspass left, JRaspass joined 20:32 sjm_uk left
[Coke] "unit" is how you declare the thing. so "unit module blah;" is the first line of a file, the entire file is the module blah. otherwise you need to use {} for scoping with the module/class/whatever. 20:42
file extensions: .raku for programs, .rakumod for modules 20:43
Hope this helps.
that feeling of ... not-quite-dread about an upcoming meeting... that is suddenly pushed out a day. ahhhh. 20:44
20:48 natrys left, mowcat joined 21:01 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 21:02 rindolf left, Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 21:07 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 21:20 BenGoldberg left, Ben_Goldberg joined, Ben_Goldberg is now known as BenGoldberg 21:33 BenGoldberg left, Ben_Goldberg joined, Ben_Goldberg is now known as BenGoldberg
no-n does unit just mean the rest of this file belongs to this package? 21:35
timotimo less "the rest", more "the entirity" IMO 21:36
no-n ahh
21:40 Altai-man left 21:42 MasterDuke joined, sena_kun joined
[Coke] m: say "hi"; unit package bar; 21:43
camelia hi
[Coke] ... I'm surprised that doesnt' error. :)
21:44 PimDaniel joined, PimDaniel left 21:48 sena_kun left 21:50 benjif joined 21:53 BenGoldberg left, Ben_Goldberg joined 21:54 Ben_Goldberg is now known as BenGoldberg
jdv79 BenGoldberg: everything alright? 21:55
21:58 BenGoldberg left, Ben_Goldberg joined 21:59 Ben_Goldberg is now known as BenGoldberg 22:00 stoned75 left
timotimo stuff that doesn't define anything should in general be fine i'd imagine 22:02
22:07 simcop2387 joined
guifa [Coke]: you need to put stuff above the unit declaration in case you have to, e.g. parameterize a class or pass something into a trait, so it makes sense to allow code above the declaration 22:15
22:16 BenGoldberg left, Ben_Goldberg joined 22:17 Ben_Goldberg is now known as BenGoldberg
[Coke] guifa++ 22:21
22:24 notagoodidea left
[Coke] m: say Mixy.^methods 22:25
camelia (of new-from-pairs)
[Coke] docs say that Mixy provides total & roll, but it doesn't.
22:26 BenGoldberg left, Ben_Goldberg joined, Ben_Goldberg is now known as BenGoldberg
[Coke] (doesn't provide *total*) 22:26
guifa [Coke]: it definitely does though: github.com/rakudo/rakudo/blob/mast...c/Mixy.pm6
at least, roll is there 22:27
[Coke] wasn't clear: docs say both, but total isn't there. 22:29
total appears to be in Mix, not Mixy. 22:30
22:32 brtastic left
[Coke] (wow, that method was docced back when the doc files were in lib/) 22:33
Geth doc: 7bac622b20 | Coke++ | 2 files
Move total method to Mix from Mixy

xt/check-signatures.t found this, presented as a SKIP'd test.
Investigation showed the method was defined in the wrong spot, and when moved, that the signature needed a slight update.
22:38
22:40 benjif left 22:41 aluaces left 22:54 melezhik joined
kawaii Is there any module or operator I can use to compare strings and return which ones 'kinda' match? Like how spellcheck presumably works in word processing applications? 22:58
guifa kawaii: there are a few different algorithms for calculating the difference between strings 23:00
moon-child kawaii: try one of these maybe modules.raku.org/search/?q=levenshtein
guifa There are a few different modules for that
I’d then make an operator for it
kawaii Ah, nice, thanks very much guys :)
guifa sub infix:<kinda-eq> ($a, $b, :$similarity-factor) { my $distance = distance-function-of-your-choice $a, $b; {formula to convert distance to similarity} > $similarity-factor } 23:02
If you need it in a regex … 23:03
github.com/alabamenhu/RegexFuzzyToken
23:13 bdju left 23:14 bdju joined
MasterDuke github.com/MasterDuke17/Text-Diff-Sift4 another alternative. i haven't benchmarked it against the levenshtein modules recently, but it used to be quite a bit faster, although not giving identical results 23:15
23:15 bdju left
kawaii MasterDuke: thank you! I will evaluate its fitness for my project also :) 23:16
23:19 bdju joined
JRaspass if you write your own, feel free to compete on code.golf/levenshtein-distance#raku ;-) 23:23
kawaii MasterDuke; am I perhaps going about this the wrong way? I'm basically writing a bot where a user will enter a command like `!team <name>` and it will return some info on that member, but of course users shouldn't be expected to know the exact string and capitalisation required so I wanted to do something like this to try and help them out. www.irccloud.com/pastebin/F2l2F7lw/ 23:33
But it seems as though some of my keys are too similar to make an informed decision based on the results. 23:34
Perhaps there is a better way?
guifa hmm, let’s see how it would work with Joccard Index 23:37
23:38 melezhik left
guifa kawaii: try this one: bit.ly/39rUJuP 23:42
It’s not as fast, but it sounds like speed isn’t your concern here — when I ignore case, the two Toms are tied for top place. 23:43
kawaii Aha this is more or less exactly what I wanted 23:44
guifa: thank you for your help this evening, I really appreciate it 23:45
You're right, searching for 'tom' does indeed tie both of them, and 'tomm' correctly prefers Tomm M 23:46
Luckily, @results is an ordered array, so I can simply choose the first in my edge case and present the user with Tom K 23:47
guifa Yup. Or do other things like evaluate based on the scores — I think anything over .33 is a reasonable enough match, and so you could present them with an option for those matches, and possible average values over running it with and without matching marks, whitespace, or capitalization (that’s what those &i, &m, &ws functions were for) 23:49
23:49 pecastro left
Xliff .tell jnthn Is there any way to introspect the symbol table of a template during render()? 23:49
tellable6 Xliff, I'll pass your message to jnthn 23:50
kawaii guifa: many thanks again for your help :)