🦋 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.
ugexe would make a good default linter rule 00:12
Nemokosch "don't use junctions" xD 00:15
also, I think this whole grammar (in the natural linguistics sense) trickery is unproductive because it's naturally (haha, no pun) informal 00:16
when I look at any(0,4) != 0, I definitely don't even know instantly what I should expect 00:17
however, to the counterpart all(0,4) != 0, I instantly know what I expect: I expect False
the same thing that makes any(0,4) != 0 False, makes all(0,4) != 0 True, they aren't connected by natural language use but the de Morgan equivalence 00:18
I don't want to sound too egoistic but to be honest, I feel I could make at least 5 completely different points against the current "specced" behavior 00:23
from interpreting != x as "different from x" and drawing the comparison of <= and > to == and != to speaking up against designing a supposedly open and inclusive language with very specifically anglo-centric mindset 00:24
Sometimes I feel Raku could be the most elegant language that can possibly fit into the mainstream - and there are some random design decisions that just don't belong to it, as if some intruder came and sabotaged 00:26
leont Frankly I consider combining negated operators and junctions a code smell. While I do think the current behavior is the better one, both options are problematic 01:05
Just use none instead of any and all ambiguity disappears
Voldenet junctions are cool, but `(0,4).grep(* != 0).Bool` is way more obvious 04:25
or ` (0,4).grep(* != 0).so` 04:26
Nemokosch Junctions exist to allow auto-threading, though 08:16
So not only are they more expressive, they can be more performant
leont: the question still arises why you see != as a negated operator and <= not a negated operator 08:18
Especially talking about numbers. It's a mere technicality whether this operator is like "not equal" or like "either less or more" 08:19
I even tried the Pascal-ish <> in case that exists as a proper operator - of course it doesn't 08:20
Also, I would like to hear why it would be problematic to let != act upon junction values directly in this case. What would be semantically unclear? 08:22
moon-child != is an alias for !==. x !== y is !(x == y). And ! collapses junctions 08:23
Nemokosch Yes, so much we figured several times 08:27
moon-child That is why the current behaviour is considered more consistent than the alternative 08:28
it is acknowledged that both behaviours lead to inconsistencies
Nemokosch This behavior can be altered, though
moon-child it can. The question is whether new behaviour would be more consistent. I posit that it would not 08:29
Nemokosch Neither does != have to be an alias for !==, nor does the ! Meta-operator go outside of the junction 08:30
I would like to know why either of these solutions would be less consistent
When they would give a semantically valid result instead of a useless one 08:31
moon-child != as different from !== I do not like. They look too similar. What I think would make the most sense is that regular ! should not collapse junctions; e.g. !any(True, False) should be any(False, True); and there should be a single designated junction-collapser 08:33
Nemokosch I think outsiders would expect != to be a proper operator - in fact, they will rarely use the negation meta-operator. 08:37
Putting that aside, !(blah == foo) could still be understood on distinct values of a junction and frankly this "over-lifting" seems to be the least defensible
On a different note: I think the most knowledgeable part of the community is too "satisfied" (perhaps this isn't the best word) with knowing how something works and why, while paying little to no attention to the abstractions and reasonings supposed users come with. 08:43
moon-child fwiw I also think != is a serious problem 08:44
but again: I don't think a solution has yet been proposed which effects more good than ill
Nemokosch An example. Of course I'm happy to know why (@a, @b) = (@b, @a) works the way it does - but the thing is, that knowledge doesn't stop me from thinking it's a massive design flaw and in my mind it just _doesn't belong to Raku_ 08:49
Geth docker: sorairolake++ created pull request #48:
Update base images
10:01
floppy_disk how do you properly do a test run of a module/project? 10:49
lizmat personally, I let App::Mi6 set up things for me, and then run 'mi6 test' :-) 10:53
gfldex `zef test .` works too 10:54
lizmat there's also "zef test" in a properly set up module distribution
gfldex++
El_Che hi lizmat
gfldex, floppy_disk
lizmat El_Che o/
gfldex i'm oldschool and use make and a fancy script: gfldex.wordpress.com/2020/08/01/dr...placement/ 10:55
floppy_disk thanks a lot 11:09
lizmat clickbaits rakudoweekly.blog/2022/03/14/2022-011-tau-2/ 15:04
[Coke] .seen ryn1x 15:22
tellable6 [Coke], I saw ryn1x 2019-07-06T06:48:04Z in #perl6: <ryn1x> huh... not only do you need to add the & when calling the sub with the if statement modifier, but you also have to add the parens.... without the parens there is no error, but the sub does not do anything....
[Coke] I like Terminal::Spinners, but would like a way to pin it to the bottom of the output window while other output scrolls past (or something similar) 15:34
ugexe i wrote a blog post explaining how to do that long ago -- deathbyperl6.com/create-a-perl6-te...gress-bar/ -- it probably doesn't work anymore! lol 15:42
[Coke] ugexe++ 15:43
[Coke] wow, lifted your script there: it ran once, and now it keeps dying with a "no exception handler located for warn" on something in core.c :) 15:50
ugexe the code in github.com/ugexe/zef/blob/7a431869...m6#L86-L97 might still work 15:52
(not just the highlighted code, but that entire module)
[Coke] to be clear, no longer at zef master, right? 15:57
(can't use use your hidden module) 15:58
ugexe right 15:59
gist.github.com/ugexe/b9ff851d15f4...f9012c6de3 16:00
that is a slightly different variant i found. it worked twice in a row
Nick53 hi 17:58
[Coke] ugexe: ugh. I made a stripped down version of that that just does a very simple class replacement... bitten by the bug that \r doesn't work on windows. 19:52
ugexe yeah thats probably half the reason i removed it from zef 20:02
Geth App-Rakubrew: 81d9950637 | (Patrick Böker)++ | release-stuff/README.md
Add upload info to release guide
20:19
[Coke] I found something that makes me thing something more complicated with \b might work. 20:22
[Coke] checks his spam folder and finds a lot of cpan phishing sends. 20:29
ugexe well yeah \b works 20:31
thats what the comments in that code say
but that is way slower than \r
ugexe ah sorry, the zef example uses \b but my second example doesnt 20:36
japhb Could also use ANSI/VT sequences to move around ... 21:22
(Stuff like "go to start of line" and "delete rest of line" are primitives)