🦋 Welcome to the former MAIN() IRC channel of the Raku Programming Language (raku.org). This channel has moved to Libera (irc.libera.chat #raku) Set by lizmat on 23 May 2021. |
|||
00:02
reportable6 left
00:31
evalable6 joined
01:03
reportable6 joined
01:24
alex35 joined,
alex35 left
02:24
quotable6 left,
tellable6 left,
unicodable6 left,
statisfiable6 left,
linkable6 left,
squashable6 left,
greppable6 left,
notable6 left,
sourceable6 left,
coverable6 left,
bloatable6 left,
nativecallable6 left,
benchable6 left,
bisectable6 left,
committable6 left,
reportable6 left,
releasable6 left,
shareable6 left,
releasable6 joined,
unicodable6 joined
02:25
committable6 joined,
coverable6 joined,
bisectable6 joined
02:26
statisfiable6 joined,
greppable6 joined
02:27
reportable6 joined,
squashable6 joined,
shareable6 joined
02:33
Doc_Holliwood left
03:25
notable6 joined
03:54
tejr left
04:00
tejr joined
|
|||
Razetime | is there any image manipulation library in raku | 04:08 | |
japhb | Razetime#5187: Some, but I wouldn't say extensive, so it depends on what exactly you need; you can search on raku.land for suspects. | 04:17 | |
moon-child | there are apparently imagemagick bindings (modules.raku.org/dist/MagickWand:cpan:AZAWAWI). No idea how good they are | ||
japhb | Hmmm, raku.land searches should be able to find substrings. One of the searches I did was for 'Magick' but it returned 0 results. :-( | 04:18 | |
tbrowder, leont, tonyo, El_Che: Just pushed 0.0.2 of github.com/japhb/serializer-perf , now with support for 3 different TOML modules. Unfortunately, I also had to add bulletproofing and reliability tests because the TOML codecs really struggled for some inputs. Unfortunately, at least one TOML codec/input combo can *still* panic MoarVM. :-( | 04:21 | ||
.oO( It's japhb sad face time ... ) |
04:22 | ||
04:22
tejr left
04:23
tejr joined
|
|||
japhb | (The panic-ing is why it's still not uploaded to fez/zef, just git pushed.) | 04:24 | |
04:24
bloatable6 joined
04:25
quotable6 joined,
tellable6 joined
04:26
benchable6 joined
04:43
Doc_Holliwood joined
04:45
Sgeo left
04:46
Sgeo joined
05:26
Doc_Holliwood left
05:27
linkable6 joined
05:42
ufobat joined
06:02
reportable6 left
06:05
reportable6 joined
06:42
gfldex left
06:43
gfldex joined,
gfldex left,
gfldex joined
06:49
ufobat left
07:23
jmcgnh left
07:26
sourceable6 joined,
nativecallable6 joined
07:28
jmcgnh joined
07:34
Doc_Holliwood joined
07:36
Sgeo left
07:44
dakkar joined
08:36
Oshawott left
08:42
Kaipi left
|
|||
nine | japhb: do you have a reduced test case for those panics? | 08:48 | |
09:14
jess joined
09:41
ufobat joined
10:17
Kaiepi joined
10:24
Guest9 joined,
Doc_Holliwood left
10:34
archenoth joined
|
|||
tbrowder | moon-child: i've used GraphicksMagic Perl modules and they worked well for me. Some time ago I seem to remember the crowd went from Image* to Graphicks* because of some issue (maybe not keeping up devel). | 10:55 | |
11:13
demostanis[m] left
11:34
simcop2387 left,
perlbot left
11:50
Guest9 left
12:03
reportable6 left
|
|||
tbrowder | sorry, that's GraphicsMagick, website outlines genesis of its spinoff from ImageMagick in 2002. imho, any raku effort ought to be with it rather than ImageMagick | 12:03 | |
latest update was 2020 | |||
12:06
simcop2387 joined
12:07
perlbot joined
12:22
Doc_Holliwood joined
13:05
reportable6 joined
|
|||
Razetime | would be useful to have something standalone | 13:08 | |
13:24
nahita joined
13:46
Sgeo joined
13:55
Doc_Holliwood left
13:57
Xliff joined
14:18
nahita left
15:18
evalable6 left,
linkable6 left
15:19
evalable6 joined
16:00
vrurg left
16:02
perryprog left,
oodani left
16:03
ingy left
16:04
MasterDuke left,
olve left
16:05
oodani joined
16:07
vrurg joined
16:13
perryprog joined,
ingy joined
16:15
MasterDuke joined
16:33
ufobat left
16:34
vaskozl joined,
vaskozl is now known as vasko
|
|||
vasko | Raku is so cool, I love it. It's so cool I really want to put it in production at work. | 16:36 | |
Is hub.docker.com/_/rakudo-star the image to use when you want reliability? | 16:37 | ||
16:37
dakkar left
|
|||
El_Che | star releases are not more reliable than regular releases | 16:42 | |
16:42
Xliff left
|
|||
El_Che | but, sure, it's certainly a good option | 16:44 | |
16:45
Doc_Holliwood joined
|
|||
El_Che | for my own use, I create alpine or ubuntu containers with packages github.com/nxadm/rakudo-pkg | 16:45 | |
that way the image is smaller | 16:46 | ||
ymmv | |||
vasko | Thanks, do you have a recommend Dockerfile with the zef install and how you manage dependencies? | 16:52 | |
Also do any of you use QMK Firmware and Linux? | 16:53 | ||
I'm wondering what the best way to start typing unicode is. | |||
I'm still painfully copy pasting symbols from the web browsers :( | |||
MasterDuke | there's a unicode entry section on the docs website | 16:56 | |
i.e., how to enter unicode | |||
16:57
vasko left
17:16
vasko joined
17:19
linkable6 joined
17:29
Sgeo left
17:32
Sgeo joined
17:33
Sgeo left
17:34
Sgeo joined
17:43
Sgeo left
17:48
Sgeo joined
17:58
patrickb joined
18:02
reportable6 left
18:03
reportable6 joined
18:05
patrickb left
18:07
Sgeo left,
Sgeo joined
|
|||
Geth | doc/py-nutshell-enumerate-patch: bc1de2cd80 | (Trey Harris)++ (committed using GitHub Web editor) | doc/Language/py-nutshell.pod6 Copyediting @JJ — I noticed that in this doc, `L<>`’s to routine docs are not in `C<>`’s, so appear as regular text instead of monospaced. This seems to be a case where there’s different styles on different pages—but should I submit a separate patch to change all these routine-link `L<>`’s to code font? Thanks. |
18:23 | |
18:27
perryprog left,
perryprog joined
|
|||
japhb | nine: Nope, panic not reduced yet. I'll see what I can do in that direction. :-) | 18:29 | |
19:00
casaca left
19:02
jess left
|
|||
[Coke] | I should be able to return a new Exception (subclass) from a sub, aye? (I Swear I'm returning it in some cases, but when I check the return value type, it's always a Hash (which is the normal happy return path) | 19:04 | |
19:12
abraxxa-home joined
|
|||
[Coke] | ... ah. I think I'm accidentally turning the exception into a fail and then getting an empty string out of it. | 19:14 | |
vrurg | [Coke]: and it doesn't explode? Are you boolifying it somewhere? | 19:37 | |
19:40
abraxxa left
19:41
abraxxa-home left
19:58
abraxxa-home joined
|
|||
jdv | [Coke]: do you turn a lot of things into fail often? | 19:59 | |
[Coke] | jdv: it's just one of my powers. | 20:05 | |
20:12
casaca joined
|
|||
jdv | i knew it! | 20:14 | |
codesections | Is there a reason why the following is: | 20:20 | |
m: say (-1).sqrt; say (-1.Complex).sqrt | 20:21 | ||
camelia | NaN 0+1i |
||
codesections | I would have expected those to both return 0+1i (that is, the NaN surprised me) | 20:22 | |
[Coke] | you have to declare if you want Complex, yes. | ||
m: -1.^name.say | |||
camelia | WARNINGS for <tmp>: Int Useless use of "-" in expression "-1.^name.say" in sink context (line 1) |
||
[Coke] | m: (-1).^name.say | 20:23 | |
camelia | Int | ||
codesections | yeah, I see that that is the case. I would have expected an auto conversion, and I was wondering why we didn't go that route | ||
m: 1.sqrt.^name.say | 20:24 | ||
camelia | Num | ||
codesections | plenty of fns convert | ||
[Coke] | would you want *every* math operator to upgrade to Complex? | 20:25 | |
operator +/or function | |||
An argument could be made either way, but it would be an argument. | 20:26 | ||
codesections | no? I mean, I wouldn't want *every* math operator to upgrade to Num either -- just the ones that need to | ||
How many would need to return a Complex result? | |||
moritz | well, Larry was against turning (-1).sqrt into 1i. He said most folks don't know, want or need complex numbers | ||
[Coke] | moritz++ | ||
moritz | and for somebody who isn't familiar with the concept, getting the information that there was an undefined operation is much more useful than some mathematical concept they don't know | 20:27 | |
codesections | I see. That makes sense – it's trading off consistency, but getting something useful in return. | ||
moritz | you could also call Num in, Num out consistent :D | 20:28 | |
codesections | not sure I agree, but I can see the force of the argument. Thanks, that was exactly what I was asking :D | ||
moritz dates himself by recalling a probably decade-old discussion with TimToady :D | 20:29 | ||
and you're welcome | |||
codesections | well, but Int in, Num out is inconsistent then! (I.e., there's *some* inconsistency with how Raku expands numeric types) | 20:30 | |
well, that's why I asked -- I figured there was a years-ago discussion that I hadn't been around for :) | |||
Oh, I see ^^^ in the docs, actually (I was going to add a note, but there's already one there -- I just didn't look in the right place) | 20:43 | ||
it also points out &roots | |||
m: say (-1).roots(2)[0] =~= i | 20:44 | ||
camelia | True | ||
20:46
nullheroes left
21:00
sono joined
21:02
jess joined
|
|||
Util | m: class L {has Str $.l}; my $c = 0; multi sub infix:<cmp> (L $a, L $b) { say "called {++$c} times"; $b.l cmp $a.l }; my @a = map {L.new: :l($_) }, <a b c a b c a>; @a .= sort; my $z = @a[0] cmp @a[1]; # Why is my custom cmp not called by .sort? | 21:10 | |
camelia | called 1 times | ||
codesections | I'm not 100% sure this is right, but I believe it's because your &infix:<cmp> isn't in the lexical scope for &sort's definition. But you can pass it in as a custom comparator with .sort(&infix:<cmp>) | 21:18 | |
Util | codesections: thanks, I am familiar with custom comparitors in sort. I am really playing with .minpairs, which says it uses <cmp>. Sort should also use <cmp> even more frequently, hence my use of it here. | 21:22 | |
Also, the infix:<cmp> definition is after the close of the class, so it *is* in lexical scope, for my explicit single call to cmp, and for the sort. | 21:23 | ||
codesections | I agree that it's in lexical scope for your call to cmp. But isn't it in dynamic scope for &sort? (That is, in scope at the callsite, but not where &sort was defined) | 21:25 | |
But I might be wrong about how multis handle scope... | 21:27 | ||
Util | I don't quite follow you on scoping. Can you see some variant of what I am doing that would use my custom <cmp> for sorting or .minpairs? | 21:29 | |
21:35
jmcgnh left
|
|||
codesections | hmm, not the most elegant, but this would work I think: | 21:35 | |
21:37
thundergnat joined
|
|||
thundergnat | m: class L {has Str $.l}; my $c = 0; multi sub infix:<cmp> (L $a, L $b) { say "called {++$c} times"; $b.l cmp $a.l }; my @a = map {L.new: :l($_) }, <a b c a b c a>; @a .= sort(&infix:<cmp>); my $z = @a[0] cmp @a[1]; | 21:38 | |
camelia | called 1 times called 2 times called 3 times called 4 times called 5 times called 6 times called 7 times called 8 times called 9 times called 10 times called 11 times called 12 times called 13 times called 14 times called 1… |
||
thundergnat | It IS odd that you need to pass in the declared cmp routine... | ||
codesections | m: class L {has Str $.l}; my $c = 0; &infix:<cmp>.wrap(->| { say "called {++$c} times"; $b.l cmp $a.l }) ; my @a = map {L.new: :l($_) }, <a b c a b c a>; @a .= sort; my $z = @a[0] cmp @a[1]; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '$b' is not declared at <tmp>:1 ------> 3>.wrap(->| { say "called {++$c} times"; 7⏏5$b.l cmp $a.l }) ; my @a = map {L.new: : |
||
codesections | m: class L {has Str $.l}; my $c = 0; &infix:<cmp>.wrap(->$a, $b { say "called {++$c} times"; $b.l cmp $a.l }) ; my @a = map {L.new: :l($_) }, <a b c a b c a>; @a .= sort; my $z = @a[0] cmp @a[1]; | 21:39 | |
camelia | called 1 times Died with X::Method::NotFound in block <unit> at <tmp> line 1 called 2 times called 3 times |
||
thundergnat | It is probably some sort of scoping issue but I am not seeing the reason for it | ||
codesections | m: class L {has Str $.l}; my $c = 0; &infix:<cmp>.wrap(->| { say "called {++$c} times"; callsame }) ; my @a = map {L.new: :l($_) }, <a b c a b c a>; @a .= sort; my $z = @a[0] cmp @a[1]; | ||
camelia | called 1 times called 2 times called 3 times called 4 times called 5 times called 6 times called 7 times called 8 times called 9 times called 10 times called 11 times called 12 times called 13 times called 14 times called 1… |
||
codesections | (and then unwrap after, which is part of what makes it less elegant) | 21:40 | |
jdv | it could be a optimization that made overloading cmp impossible? | 21:41 | |
lizmat would probably know | |||
lizmat | what is the nature of the programmatical emergency? | 21:42 | |
jdv | just skimming src/core.c/Rakudo/Sorting.pm6 hints at that, maybe | ||
thundergnat | There are 14 candidates for cmp. github.com/rakudo/rakudo/blob/efb3...er.pm6#L14 | ||
Util | Classes should be able to define their own ordering. My understanding is that such should be done via custom `multi sub infix:<cmp>` with 2 params, each of the class. | 21:43 | |
lizmat | that is the idea, yes | ||
thundergnat | Util: I agree, it _should_ work | 21:44 | |
Util | .minpairs *relies* on it working, since it cannot take a &by custom comparitor at call-time. | ||
lizmat is still not sure what should work | 21:45 | ||
Util | From docs/announce: | 21:46 | |
2017.04.md:74: + Made Any.maxpairs/.minpairs use `cmp` and return Seq [5927186] | |||
2018.06.md:54: + Made .minpairs/.maxpairs about 25% faster [788cda94] | |||
2018.12.md:32: + Fixed semantics of `minpairs`/`maxpairs` (ignore undefined values) [7bf7a2c6] | 21:47 | ||
Unfortunatly, I don't have working Docker Rakudo that far back. | |||
21:55
casaca left
|
|||
Util | There is a note in docs.raku.org/routine/cmp : "if $a eqv $b, then $a cmp $b always returns Order::Same." | 22:00 | |
but when I also specify a custom <eqv>, it does not get called. | |||
lizmat | Util: do you have a golf? | 22:01 | |
Util | lizmat: just the one I posted shortly before you originally spoke: | 22:03 | |
thundergnat | colabti.org/irclogger/irclogger_lo...07-28#l202 | ||
Util | m: class L {has Str $.l}; my $c = 0; multi sub infix:<cmp> (L $a, L $b) { say "called {++$c} times"; $b.l cmp $a.l }; my @a = map {L.new: :l($_) }, <a b c a b c a>; @a .= sort; my $z = @a[0] cmp @a[1]; # Why is my custom cmp not called by .sort? | ||
camelia | called 1 times | ||
Util | Maybe relevant parts of Roast: | ||
github.com/Raku/roast/blob/c07c5b9...eric.t#L69 | 22:04 | ||
github.com/Raku/roast/blob/c07c5b9...meric.t#L8 | |||
22:05
jmcgnh joined
|
|||
Util | The golf of my actual use-case is: | 22:06 | |
m: class L {has Str $.l}; my $c = 0; multi sub infix:<cmp> (L $a, L $b) { say "called {++$c} times"; $b.l cmp $a.l }; my @a = map {L.new: :l($_) }, <a b c a b c a>; say @a.minpairs; my $z = @a[0] cmp @a[1]; # Why is my custom cmp not called by .minpairs? | |||
camelia | (1 => L.new(l => "b")) called 1 times |
||
22:07
casaca joined
|
|||
lizmat | Util: if you change the sort to "@a .= sort(&[cmp]);" it works | 22:08 | |
it will then use the infix:<cmp> known in that scope | 22:09 | ||
I think this is actually one of the things that new-disp will fix | |||
the &[cmp] that .sort sees, does not include your added candidate | 22:10 | ||
I'm not sure whether that is actually a bug or not, but it *is* incovenient as hell :-) | |||
Util | I strongly view it as a bug. | 22:11 | |
22:13
casaca left
|
|||
lizmat | testing some stuff now | 22:13 | |
Util | I see a branch named `new-disp`, but I don't know it's history. Is there already a summary anywhere? | ||
lizmat | 6guts.wordpress.com/2021/04/15/rak...ispatcher/ | 22:14 | |
Util | Oh, *that* one :^) Thank you. | 22:17 | |
lizmat | ok, I have a fix, but it involves using CALLERS:: | 22:22 | |
and I'm pretty sure jnthn doesn't like that :-) | |||
and it will affect performance for the "normal" case | 22:23 | ||
codesections | Util: does the &wrap workaround I suggested address your usecase? (ugly though it might be) | 22:26 | |
lizmat | Util: have something that may fix this without too much performance loss for the common case | 22:37 | |
will make a PR for it tomorrow, as I would like to have more eyes on it | |||
lizmat is now off to bed :-) | |||
Util | lizmat: Thanks! I will try to shore up my argument for how custom <cmp> should change the behaviours of other ops and methods. | 22:39 | |
22:39
abraxxa-home left
|
|||
Util | codesections: I should not use it for this usecase (exhibition code), but would consider it for real-world, | 22:41 | |
if I saw how to actually use it to change the comparator; | |||
`->|` does not give me access to $a&$b to do the real calculation, and `->$a, $b` errors. | |||
Thanks for your efforts, though! | |||
thundergnat, jdv: thank you for contributing! | 22:42 | ||
codesections | (I think you could capture the args in |c and then check if they're $a & $b, but that'd get even uglier and it sounds like there will be a better way soon) | 22:43 | |
22:51
squashable6 left
22:52
squashable6 joined
23:00
Doc_Holliwood left
|