🦋 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.
Nemokosch Implying a camel doesn't work :P 00:04
It does work, you just can't quickly disassemble it and replace the engine
rjbs: they will be content by some convenience upgrades but "excited" is definitely not a word I would have thought of, to be honest 00:06
00:08 reportable6 left 00:09 reportable6 joined
rjbs Perl v5.36.0 is now available. We'll see whether there are any noises of excitement from the crowd. 🤷 00:33
01:09 linkable6 left 01:10 linkable6 joined 02:10 bloatable6 left, benchable6 left, linkable6 left, greppable6 left, quotable6 left, coverable6 left, releasable6 left, shareable6 left, tellable6 left, statisfiable6 left, committable6 left, greppable6 joined 02:11 committable6 joined, linkable6 joined 02:12 statisfiable6 joined, benchable6 joined, tellable6 joined, bloatable6 joined, coverable6 joined, shareable6 joined 02:13 releasable6 joined, quotable6 joined
[Coke] Yay, 5.36! 02:22
also: hey, rjbs++ 02:23
rjbs [Coke]: o7
[Coke]: Can you explain the direction of hyperoperator arrows to me? The documentation I read didn't help me. 02:25
It says you point the >> at "at the shorter list", but also says that "if one is shorter, it will cycle over the shorter one", which makes me wonder whether the >> direction is relevant or what! 02:26
I see that if I point the arrows the "Wrong" way I seem to get an error instead of cycling? 02:27
If I point them both outward, it's fine. Is the issue "if the arrows point at the list, it cycles, and if they do not, it won't"?
[Coke] m: my @a=1..10; my @b=1..20; say @a >>+>> @b; say @a <<+<< @b; say @a <<+>> @b; 02:31
camelia [2 4 6 8 10 12 14 16 18 20]
[2 4 6 8 10 12 14 16 18 20 12 14 16 18 20 22 24 26 28 30]
[2 4 6 8 10 12 14 16 18 20 12 14 16 18 20 22 24 26 28 30]
02:31 p6steve left
[Coke] m: my @a=1..10; my @b=1..20; say @a >>+<< @b 02:31
camelia Lists on either side of non-dwimmy hyperop of infix:<+> are not of the same length while recursing
left: 10 elements, right: 20 elements
in block <unit> at <tmp> line 1
02:31 p6steve joined
[Coke] I don't have any more info than that, but I agree the text on the doc site doesn't seem sensical. 02:32
if you could, please open a doc ticket on that. 02:33
rjbs will do as soon as v5.37.0 is out ;) 02:34
[Coke] ha!
rjbs github.com/Raku/doc/issues/3283 02:38
That exists, but I can't really understand it.
leont IME, hyper tends to work better with unary and postfix operators anyway 02:39
[Coke] rjbs++
rjbs: I still owe you a steak or something. 02:40
Looking forward to paying up
rjbs I remain ready to eat it.
[Coke] I am reminded to submit my expense reports before the end of the fiscal year
rjbs [Coke]: I filed github.com/Raku/doc/issues/4077 02:42
[Coke] thanks, sir! -> afk 02:44
leont For infix operators, Z or X is usually what one wants, and they chain better too
»+« is essentially the same as Z+, except that you can do @a Z+ @b Z+ @c 02:45
rjbs Rather than try to understand now ,I am going to bed! 👋🏽 02:46
leont Me too, except you're in the appropriate timezone to do that and I'm well beyond that
And "prefix" «~« @list is the same as "prefix" X~ @list 02:49
03:07 dgtlchlk joined 03:13 dgtlchlk left 03:34 Guest35 left 03:42 systems joined 03:48 Kaiepi left 03:59 Summer left 04:19 sena_kun joined 05:19 benchable6 left, reportable6 left, bloatable6 left, linkable6 left, unicodable6 left, coverable6 left, notable6 left, bisectable6 left, greppable6 left, committable6 left, nativecallable6 left, statisfiable6 left, sourceable6 left, releasable6 left, evalable6 left, quotable6 left, tellable6 left, shareable6 left, bisectable6 joined, greppable6 joined, unicodable6 joined 05:20 bloatable6 joined, committable6 joined, sourceable6 joined, coverable6 joined, shareable6 joined 05:21 linkable6 joined, reportable6 joined, releasable6 joined, benchable6 joined, statisfiable6 joined 05:22 notable6 joined, tellable6 joined, quotable6 joined, evalable6 joined, nativecallable6 joined
Zephyr the documentation site's table of contents doesn't scroll for me, is it a bug? docs.raku.org/type/Any 05:45
06:08 reportable6 left, reportable6 joined
p6steve__ Zephyr: there are two cols on each doc page (eg. docs.raku.org/language/regexes) index on left, content on right - they scroll locked together (sometimes can be a pain when you are below the index) - this is a feature not a bug 06:19
Zephyr: is that what you are seeing? or something else? 06:20
Zephyr oh, I expected the index to be scrollable on its own 06:22
k, not a bug then, it's annoying indeed though
06:23 Sankalp left 06:51 systems left
ended up using stylus and adding custom css, here if anyone needs the same feature: ```css 06:54
nav.indexgroup {
overflow: scroll;
height: 100vh;
}```<github.com/openstyles/stylus/>
07:51 evalable6 left, linkable6 left 07:53 evalable6 joined 07:54 linkable6 joined
leont Zephyr: yeaj that's annoying 08:06
*yeah 08:10
Nemokosch +1 for the cols being annoying 08:16
I tend to jump straight to the end to see the left column properly 08:18
For the hyper metaoperators - we have talked about this not long ago and I'm shocked how misunderstood they are 08:24
And I'm also just a "lay user" who just read the docs and maybe asked around here
08:31 Sgeo left
Okay, so again, I'm gonna try to list differences I can think of 08:33
1. different values are combined 08:34
with the zip metaoperator, the shortest list "wins" and the rest of the values are ignored
with the cartesian product operator, everything (of one list) is combined with everything (of the other list) 08:35
with the hyper metaoperator, you can decide whether the shorter list or the longer list should "win" - if the longer list wins, the shorter list is expanded as if it was a cycle of its values 08:37
08:38 Nemokosch joined
let's pick an example. Could you easily make an oscillating sequence (plus, minus, plus, minus) easily with Z? I don't think so 08:39
Nemokosch m: dd <1 8 23 5 2 99 44> >>*>> (1, -1) 08:40
camelia (1, -8, 23, -5, 2, -99, 44)
tellable6 hey Nemokosch, you have a message: gist.github.com/f95223405237ab495f...861adbcd3b
Nemokosch 2. "nodality" 08:44
If you use the ZIP metaoperator, it takes the elements of your list as they are, as "nodes". It doesn't expand list elements further.
Nemokosch m:  ((1,2), (4,5), (6,7)) Z+ ((8, 9, 10), (94,), (120, 1)) 08:45
camelia Potential difficulties:
Useless use of Z+ in sink context
at <tmp>:1
------> ((1,2), (4,5), (6,7)) ⏏Z+ ((8, 9, 10), (94,), (120, 1))
Nemokosch oops
m: dd  ((1,2), (4,5), (6,7)) Z+ ((8, 9, 10), (94,), (120, 1))
camelia (5, 3, 4).Seq
Nemokosch See? It just added the lengths of the corresponding arrays
moritz m: dd  ((1,2), (4,5), (6,7)) Z[»+«] ((8, 9, 10), (94,), (120, 1)) 08:46
camelia Lists on either side of non-dwimmy hyperop of infix:<+> are not of the same length while recursing
left: 2 elements, right: 3 elements
in block <unit> at <tmp> line 1
Nemokosch the + operator was invoked on the arrays
moritz m: dd  ((1,2), (4,5), (6,7)) Z[«+»] ((8, 9, 10), (94,), (120, 1)) 08:47
camelia ((9, 11, 11), (98, 99), (126, 8)).Seq
Nemokosch m: dd ((1,2), (4,5), (6,7)) >>+>> ((8, 9, 10), (94,), (120, 1)) 08:48
camelia ((9, 11), (98, 99), (126, 8))
Nemokosch This behavior of the zip metaoperator is often desirable but it's good to note that the hyper metaoperator doesn't work this way. 08:49
and I suppose this is where directionality starts to matter even more
as you can see, (1,2) "won" against (8, 9, 10)
if you always want the longer list to "win", you can use <<+>> as moritz did
Nemokosch m: dd ((1,2), (4,5), (6,7)) «+» ((8, 9, 10), (94,), (120, 1)) 08:50
camelia ((9, 11, 11), (98, 99), (126, 8))
Nemokosch and now we spoiled another difference 08:51
3. Z (and X) produces sequences while the hypers produce lists!
This is because Z processes the values one after the other while hypering allows for out-of-order processing 08:52
Geth ecosystem: 7bec974c31 | (Elizabeth Mattijsen)++ | META.list
Remove CoreHackers::Sourcery / XML::Entity::HTML

Because they live in the zef ecosystem now
08:56
Nemokosch For the second point: the "nodality" of hyper depends on the invoked operator or method 08:57
you one could define stuff that acts upon lists as values but it's not worth it if that's what you want
Geth ecosystem: 215f461668 | (Elizabeth Mattijsen)++ | META.list
Freeze System::Passwd

While it's being moved to the zef ecosystem
09:02
Nemokosch if you want, say, matrix addition for some reason, hyper is pretty cool 09:03
and if you use >>+<<, it will throw an exception if the sizes don't match somewhere
for the direction of the arrow... I think a possibly helpful terminology could be: a side is "dominant" if the > is open towards it 09:07
the "dominant" side dictates the element flow, it is responsible for the join of values
09:08 Kaiepi joined
or with a funnier tune: it could be called "bossy side" 09:08
and if it points towards the operator, that's the "courteous side" 09:09
the "courteous side" provides the values in a way the "bossy side" wants them
if the "bossy side" wants 5 values, the "courteous side" will provide 5 values
if both ends are "courteous" (<<+>>), they always let the other win if it's longer
if both ends are "bossy" (>>+<<), they never let the other win, therefore any size differences result in a conflict 09:10
it's like a happy version of prisoner's dilemma 🙂 09:11
09:25 Nemokosch left 09:45 solitario left 09:46 solitario joined 10:08 Nikhil joined 10:09 Nikhil left 10:13 jjido joined
Geth ecosystem: fe813b6d9d | (Elizabeth Mattijsen)++ | META.list
Remove YAML from active exosystem

This module at first sight appears to provide YAML support to Raku but on second sight, just provides an (incomplete and possibly incorrect) way to dump a Raku object as YAML. It hasn't had any significant maintenance since 2010.
The repository has been archived. The versions released so far remain available in the REA.
10:18
10:27 Kaiepi left 10:28 Kaiepi joined 10:30 Kaiepi left 10:31 Kaiepi joined
Geth ecosystem: 953f367bdf | (Elizabeth Mattijsen)++ | META.list
Freeze HTTP::Server (aka HTTP::Roles)

While it is being moved to the zef ecosystem
10:38
11:04 jjido left 11:31 Sankalp joined 11:35 Sankalp left, Sankalp joined 11:50 swaggboi left 11:57 discord-raku-bot left 11:58 discord-raku-bot joined 12:07 reportable6 left, reportable6 joined 12:09 oodani left 12:11 oodani joined 12:27 discord-raku-bot left 12:32 discord-raku-bot joined 12:55 jjido joined 13:13 Guest35 joined 13:47 Guest35 left 13:49 jjido left
rjbs Util: Thanks for your reply, re: hypers. 13:59
I am still so confused. :( 14:07
m: dd (1,2,3) >>+>> 2
camelia (3, 4, 5)
rjbs m: dd (1,2,3) >>.say
camelia ===SORRY!=== Error while compiling <tmp>
Missing << or >>
at <tmp>:1
------> dd (1,2,3) >>.⏏say
rjbs m: dd (1,2,3)>>.say
camelia 1
(Bool::True, Bool::True, Bool::True)
2
3
rjbs m: dd (1,2,3)>>+>> 2
camelia ===SORRY!=== Error while compiling <tmp>
Malformed postfix
at <tmp>:1
------> dd (1,2,3)>>⏏+>> 2
expecting any of:
postfix
rjbs What's going on with the required/forbidden whitespace? 14:08
lizmat in the case of >>. you should see that >> as a sort of prefix on the .
have to be afk, sorry & 14:09
rjbs No worries, thanks even for that.
I'm adding a bunch of questions to #4077 14:10
github.com/Raku/doc/issues/4077#is...1140273579 -- I think I understand it now, and if this is true, it should be clearly documented. 14:19
"We will clearly document that rjbs understands."
Nemokosch "If the list is not actually shorter, an error is raised. They are not "dwimmy" because you must tell them what to do and you must be correct." 14:27
I don't think this is right
and it contradicts what Util wrote 14:29
rjbs You're correct, let me find the example I was looking at.
m: dd (1,2,3) <<+<< (2)
camelia Lists on either side of non-dwimmy hyperop of infix:<+> are not of the same length while recursing
left: 3 elements, right: 1 elements
in block <unit> at <tmp> line 1
Nemokosch I think the whole length-centrism is bothersome
rjbs m: dd (1,2,3) <<+<< (1,2) 14:30
camelia (2, 4)
rjbs So... wtf?
Nemokosch important thing: (2) is not a list 14:31
this is simply a dimension problem
14:31 Nemokosch joined
rjbs Please elaborate? 14:31
Nemokosch m: dd (1,2,3) <<+<< (2,)
camelia (3,)
Nemokosch mind the comma
rjbs Ugh.
Thanks. 14:32
Nemokosch m: dd (4) <<+<< (2)
camelia 6
Nemokosch it's the comma that makes a list, not the parens 14:33
rjbs I don't have a useful response to this. It's frustrating. 14:34
Nemokosch Which one? 14:35
tbh I find it unnecessarily complicated that the "courteous" end can pretend to have higher dimension but not lower
it should be either both way or neither way
rjbs Well, the docs say "Single elements are turned to a list, so they can be used too."
so as you say, presumably this is some kind of type/container/dimensionality problem
but it feels *excessively* fiddly, and the error message does not help with it 14:36
Nemokosch Yeah tbh I don't consider the word of the documentation documentative 14:37
wouldn't care too much about their phrasing
rjbs Well, but as an *extremely* casual/rare user of Raku, the documentation is where I go to find facts, and the error message is where I want to get a useful correction. 14:38
Nemokosch The correction is pretty useful in this case imo 14:39
And gotta be honest: this is not the kind of topic I would try to pick up "casually"
you learn it by doing
rjbs walks away. 14:43
Nemokosch so it's fair that the documentation is full of rather bogus phrasings, however it's not really fair to expect that one can just pick it up by reading some sort of specification
15:31 linkable6 left, evalable6 left, linkable6 joined 15:33 evalable6 joined 15:57 RakuIRCLogger left 15:58 RakuIRCLogger joined 16:02 RakuIRCLogger left, RakuIRCLogger joined
lizmat m: dd (1,2,3) <<+<< 2 16:48
camelia Lists on either side of non-dwimmy hyperop of infix:<+> are not of the same length while recursing
left: 3 elements, right: 1 elements
in block <unit> at <tmp> line 1
16:49
lizmat m: dd (1,2,3) <<+<< 2,3
camelia Lists on either side of non-dwimmy hyperop of infix:<+> are not of the same length while recursing
left: 3 elements, right: 1 elements
in block <unit> at <tmp> line 1
lizmat m: dd (1,2,3) <<+<< (2,3)
camelia (3, 5)
lizmat hmmm
17:02 evalable6 left, linkable6 left 17:03 evalable6 joined, linkable6 joined
rjbs That's how I felt, too, except with less background knowledge. 🤪 17:09
lizmat it actually feels like a bug to e 17:14
*me
yeah, I think it's a bug 17:15
rjbs I look forward to hearing what's supposed to happen when! 😄 (Thanks for looking into this, it was a very small cloud over my day.) 17:16
lizmat looks like the scalar value candidate is the one from >>+<< 17:17
yup, wrong dispatch or missing candidate 17:18
it dispatches to the x >>op<< [y] candidate
I'll make an issue for it, so it won't fall through the cracks 17:20
rjbs: your understanding was correct, I believe 17:21
rjbs \o/ Chalk one up for reading the documentation to learn things.
17:25 jjido joined
lizmat github.com/rakudo/rakudo/issues/4938 17:29
Nemokosch I'd say this is a happy end 17:41
I wish everything annoying was a bug 17:44
[Coke] (doc site css) Please ping the new site being staged to replace, has all new style. 17:48
Nemokosch by the way... I could also imagine this was a bug, however it's really hard when you have nothing to compare to 17:49
and I think the responsibility with the documentation is huge at this 17:51
it's one thing that we can't learn complex and kinda obscure things from the docs
lizmat Nemokosch: what made me realize that it *was* a bug for sure, is the stack trace winding up in an >>op<< candidate
Nemokosch and it's something else that we can't find out the correct behavior even if we know what we are looking for 17:52
17:52 [Coke] left
lizmat I probably won't have any time to look at it today, but will do so tomorrow 17:52
Nemokosch 🍬 17:53
17:54 jjido left
I don't want to seem too thankless because there are a bunch of people like you yourself who are making great efforts to make the language and the community its best self 17:55
But I have to point out something that I think is a very essential problem in the ecosystem 17:56
and this is Roast itself
it's neither approachable, nor does it seem to be thourough enough 17:57
It's like, Raku kind of has a standard but not really 17:59
lizmat well, that's a general issue with testing, I'd say: there are never enough tests 18:01
Nemokosch perhaps you are right but I think this is just half of the story 18:02
18:02 [Coke] joined
I think it would be important to have a readable version of the standard, whatever one would call it, _besides_ the docs, or what the docs seem to be currently 18:04
and from what I can see, there used to be written specifications
18:05 Nemokosch left
[Coke] if you have a specific doc request, please let me know. 18:05
But I can tell you there aren't a lot of volunteers at the moment to be writing new content. 18:07
(new doc site demo) : see github.com/Raku/doc/issues/1246#is...1101393152
18:07 reportable6 left
Nemokosch Yes, I figured so... 18:08
[Coke] The doc site should basically be documenting the spec, yes. issues: 1) It's incomplete. 2) it doesn't distinguish between versions of the standard 18:09
so if you see another issue aside from that, please let me know.
Nemokosch Well, I wonder if I can help. For starters, it would be good to have a "readable" version of Roast, that is, something that is in human language, not code 😄 18:10
[Coke] (3ish: some of the method definitions are taken from rakudo where they are code, but those aren't necessarily specifically called out in the spec.)
Nemokosch You know, what I have in mind is a distinction between learning material and precise, "legal" kind of stuff
18:10 reportable6 joined
[Coke] there are both in the doc site; /language vs. /type, etc. 18:11
Nemokosch The docs currently seem more like learning material, with examples, motives, gotchas and whatnot 18:12
ugexe the apocalypse documents used to link directly to the roast file/code it was talking about
tellable6 2022-05-14T19:20:27Z #raku-dev <vrurg> ugexe I somehow overlooked that github.com/rakudo/rakudo/pull/4917 is worth your review too.
gfldex <@297037173541175296> not to have a formal spec was a deliberate act, as they are not obeyed and you can't even test them. 18:14
Nemokosch This seems like an easy but bad solution to the problem
Something you can do as long as the language is in the hands of a couple of people who understand it
Of course this is an extreme but like gotta take a look in that direction: C. 18:16
Even someone who can't code in whatever language could decide how a certain piece of C code (including that damned preprocessor lang) is valid or not and what it does
including the infamous "undefined behavior"
This is thanks to the C standard
Even someone who can't code in whatever language could decide if a certain piece of C code (including that damned preprocessor lang) is valid or not and what it does 18:18
and very bluntly put: lizmat can't always be here to tell everyone whether some behavior is a bug or a feature 18:20
let alone which version, as Coke pointed out... 18:21
18:30 Sgeo joined
lizmat well, that'd be one of my proposals: to freeze the documentation along with the Rakudo releases 18:32
[Coke] ... with the Raku releases, not the Rakudo releases, IMO 18:35
but, again, we have like 30 tickets opened tied to previous rakudo releases for docs that needed updating that we haven't gotten to yet. 18:36
(help wanted!)
Nemokosch I'm not quite there yet but maybe this is something I could help with 18:45
lizmat ++Nemokosch
19:11 jjido joined 19:18 japhb left 19:40 jjido left 19:47 Sauvin is now known as Lemniscate 19:51 Lemniscate is now known as Sauvin
[Coke] happy for the help, feel free to join #raku-doc with any questions about where to jump in on existing doc site or any new efforts. 20:31
yays, as he finishes his work "homework".
p6steve__ my 2c for the docs: (i) its not a team sport, (ii) we need to differentiate between tuning and rewriting [do not misunderestimate the effort of the latter] 20:37
[Coke] I'm not sure what the team sport comment is meant to address. 20:38
Could you clarify? 20:40
p6steve__ Coke: sure - I mean that the original docs.raku.org were a very nuanced balance between clarity, concision and rationale ... and (fairly) consistent across a huge range of material 20:42
Coke: they were evidently the product of a single mind with a very broad (and deep) appreciation of raku 20:43
Coke: so, the danger is (IMO), that we move to documentation by committee and that the natural variation in knowledge / tech writing will lead to a general reduction in consistency and quality 20:44
[Coke] I think you are being very gracious, and assuming there was a single driving person generating (or at least editing) the docs. I don't think that was ever entirely the case. Also, we don't really have *ANY* volunteers generating docs at the moment, so there's little concern there. 20:46
I am happy to accept volunteers for contributions, editing, etc.
p6steve__ Coke: so I would urge you'all on the doc side to organise so that there are "owners" of different aspects and to have a robust review process
Coke: (and I am sure that you have much of this in place - so please do not take this as a critique)
[Coke] I am trying not to, thank you. :) 20:47
Point taken - at the moment, I expect any new contributors are going to submit PRs, which should be reviewed.
perryprog hotlava
whoops, meant to type that into spotlight 20:48
[Coke] (I'm basically the editor by default at the moment.) 20:49
p6steve__ Coke: sorry - teaching my grandma how to suck eggs
[Coke] :) 20:50
Happy for the feedback, no worries
20:51 evalable6 left, linkable6 left, evalable6 joined 20:54 linkable6 joined
p6steve__ Coke: sure - IMO we lack womanpower generally and only way to get that is to attract / grow the community - so I will keep banging on on that topic 20:55
[Coke] Thanks! 21:09
Suggestion: if someone is looking for grant work, I would be excited for someone to go through and address the long open tickets, or do some editing. 21:10
p6steve__ m: (1,2,3) >>+>> 2, 21:12
camelia ( no output )
p6steve__ m: say (1,2,3) >>+>> 2,
camelia (3 4 5)
Anton Antonov <@195453211409121280> Is your name Wenzel P.P. Peppmeyer? (Need it for a proper reference to one of your blog posts.) 21:20
gfldex <@694526400488669234> it is 21:21
21:35 jjido joined 21:57 jjido left
Geth ¦ doc: coke assigned to Altai-man Issue (My rendering of) the central operator table in the Operators page is profoundly wrong github.com/Raku/doc/issues/4071 22:03
¦ doc: coke self-assigned Decide which methods should be documented github.com/Raku/doc/issues/3577 22:11
[Coke] .seen codesections
tellable6 [Coke], I saw codesections 2022-03-29T20:41:00Z in #raku: <codesections> I don't have a release date for epee yet, sorry ☹
[Coke] .ask codesections - you still working on github.com/Raku/doc/issues/3563 or should I unassign you? 22:12
tellable6 [Coke], I'll pass your message to codesections
[Coke] m: use soft; 22:13
camelia ( no output )
[Coke] m: use barf;
camelia ===SORRY!=== Error while compiling <tmp>
Could not find barf in:
/home/camelia/.raku
/home/camelia/rakudo-m-inst-1/share/perl6/site
/home/camelia/rakudo-m-inst-1/share/perl6/vendor
/home/camelia/rakudo-m-inst-1/share/pe…
[Coke] wonders why that's called soft. 22:23
[Coke] opens a doc ticket to clean up the docs that are there, but any new info appreciated.
22:51 Nemokosch joined
Nemokosch Where can I find IRC logs? 22:54
perryprog irclogs.raku.org/home.html
23:22 Nemokosch left
Nemokosch thanks 🙂 23:22
perryprog No problem