🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 6 September 2022. |
|||
00:00
zups left,
gugod left,
peder left,
mark22k left,
spacekookie left,
rypervenche left,
charsbar left,
cm left,
eseyman left,
kybr left,
broquaint left,
renormalist left,
amenonsen left,
kaol left,
gabiruh left,
kaol joined,
renormalist joined,
gugod joined,
Manifest0 left,
reportable6 left,
kybr joined,
rypervenche joined,
peder joined,
rypervenche left,
rypervenche joined,
charsbar joined,
zups joined
00:01
reportable6 joined
00:02
gabiruh joined,
cm joined,
amenonsen joined,
mark22k joined
00:03
Geth left,
Geth joined,
spacekookie joined
00:05
broquaint joined,
eseyman joined
00:19
sivoais left,
sivoais joined
00:47
deoac joined
01:04
jrjsmrtn left,
jrjsmrtn joined
01:53
cm left
02:01
deoac left
02:09
cm joined
02:17
cm left
02:18
cm joined
03:27
quotable6 left,
benchable6 left,
bloatable6 left,
shareable6 left,
evalable6 left,
bisectable6 left,
coverable6 left,
statisfiable6 left,
linkable6 left,
unicodable6 left,
committable6 left,
notable6 left,
reportable6 left,
nativecallable6 left,
sourceable6 left,
tellable6 left,
greppable6 left,
releasable6 left,
squashable6 left
03:28
sourceable6 joined,
tellable6 joined,
reportable6 joined,
quotable6 joined,
benchable6 joined,
shareable6 joined,
unicodable6 joined
03:29
committable6 joined,
coverable6 joined,
linkable6 joined,
greppable6 joined,
bisectable6 joined,
releasable6 joined,
statisfiable6 joined
03:30
squashable6 joined,
evalable6 joined,
bloatable6 joined,
notable6 joined,
nativecallable6 joined
04:15
Voldenet left,
Voldenet joined
04:32
lucs left,
lucs joined
04:36
elcaro left,
elcaro joined
05:21
kjp joined
06:00
reportable6 left,
reportable6 joined
06:48
abraxxa joined
07:11
Manifest0 joined
07:16
Scotteh left,
Scotteh joined
07:56
jpn joined
08:05
jpn left
08:08
ab5tract left
08:10
ab5tract joined,
ab5tract left,
ab5tract joined
08:21
teatwo left,
teatwo joined
08:23
jpn joined,
teatwo left,
teatwo joined
08:36
Sgeo left
08:37
Sgeo joined
08:58
teatwo left,
teatwo joined
09:00
Sgeo left
09:23
ab5tract left
09:43
ab5tract joined
10:17
abraxxa left
10:41
nine left,
m_athias left,
camelia left
10:59
m_athias joined
11:04
nine joined
11:16
ab5tract left,
ab5tract joined
11:29
camelia joined
11:52
gordonfish left
11:53
gordonfish joined
12:00
reportable6 left
12:02
abraxxa-home joined
12:03
reportable6 joined
12:04
abraxxa-home left
12:39
cm_ joined,
cm left,
cm_ is now known as cm
13:58
nativecallable6 left,
coverable6 left,
statisfiable6 left,
reportable6 left,
unicodable6 left,
squashable6 left,
committable6 left,
tellable6 left,
bloatable6 left,
greppable6 left,
releasable6 left,
sourceable6 left,
evalable6 left,
notable6 left,
bisectable6 left,
shareable6 left,
quotable6 left,
linkable6 left,
benchable6 left
13:59
bloatable6 joined,
bisectable6 joined,
coverable6 joined,
notable6 joined,
linkable6 joined,
reportable6 joined,
shareable6 joined,
releasable6 joined
14:00
benchable6 joined,
committable6 joined,
sourceable6 joined,
squashable6 joined,
quotable6 joined
14:01
nativecallable6 joined,
statisfiable6 joined,
unicodable6 joined,
greppable6 joined,
evalable6 joined,
tellable6 joined
14:20
pierrot_ left
14:21
pierrot joined
14:33
synthmeat left
14:34
synthmeat joined
15:00
Sgeo joined
|
|||
nemokosch | raku.land/github:masak/Alma having * as version is not nice | 15:24 | |
antononcube | 🙂 The corresponding GitHub repository has 217 open issues, (and 223 closed ones.) | 15:37 | |
16:00
linkable6 left,
evalable6 left,
evalable6 joined
16:02
linkable6 joined
|
|||
nemokosch | Including several by Mäsak himself since he stopped doing anything substantial | 16:11 | |
lizmat | masak is behind the great firewall nowadays *and* busy with other stuff | 16:18 | |
nemokosch | regardless, a *-versioned distribution popping up in raku.land is probably an anomaly | 16:42 | |
sitting on top of "recent dists" simply because some textual modification | |||
lizmat | I've created a PR with suggestion of publishing on zef | 16:48 | |
we can also of course remove Alma from the ecosystem | 16:49 | ||
17:02
evalable6 left,
linkable6 left
17:03
linkable6 joined
17:05
evalable6 joined
17:14
discord-raku-bot left,
discord-raku-bot joined
|
|||
leont repeats his rant about versions versus version ranges | 17:18 | ||
librasteve | looking again at Alma - seems like there are some familiar things from the recent AST work … and yet I do not recall seeing any info on macros in the recent AST material … did I miss anything? | ||
17:20
timo left
17:21
timo joined
|
|||
antononcube | @leont Please summarize your recent publishing of "SQL::Abstract" in Zef ecosystem. 🙂 | 17:23 | |
leont | antoncube: in what way do you mean that? | 17:24 | |
antononcube | @leont Agh, something you already did here: github.com/Leont/sql-abstract/blob/main/Changes | 17:25 | |
I should start keeping "Changes" files in my packages... | 17:26 | ||
17:29
coleman left
|
|||
lizmat | at the Raku Core Summit we agreed to look at what macros are going to do *after* the rest of RakuAST has materialized | 17:30 | |
17:31
coleman joined
18:00
reportable6 left
18:02
reportable6 joined,
nebuchad` left
18:03
nebuchad` joined
|
|||
librasteve | lizmat: makes sense... I look forward to being able to instantiate objects via macros so that they can be precomped | 18:04 | |
coleman | m: sub foo(@*cmd) { say @*cmd }; foo(<123>); | 18:10 | |
camelia | Type check failed in binding to parameter '@*cmd'; expected Positional but got IntStr (IntStr.new(123, "123")) in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
coleman | m: sub foo(@*cmd) { say @*cmd }; foo(<123 456>); | 18:11 | |
camelia | (123 456) | ||
coleman | I was expecting <123> to work | ||
[Coke] | m: sub foo(@*cmd) { say @*cmd }; foo(|<123>) | ||
camelia | Type check failed in binding to parameter '@*cmd'; expected Positional but got IntStr (IntStr.new(123, "123")) in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
coleman | m: sub foo(@*cmd) { say @*cmd }; foo(('123')); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Calling foo(Str) will never work with declared signature (@*cmd) at <tmp>:1 ------> sub foo(@*cmd) { say @*cmd }; ⏏foo(('123')); |
||
[Coke] | m: sub foo(@*cmd) { say @*cmd }; foo(<123>,) | 18:12 | |
camelia | Type check failed in binding to parameter '@*cmd'; expected Positional but got IntStr (IntStr.new(123, "123")) in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
nemokosch | <123> is an Allomorph, not a list | ||
coleman | m: sub foo(@*cmd) { say @*cmd }; foo(@('123')); | ||
nemokosch | that's not going to work | ||
camelia | (123) | ||
[Coke] | Note the @* parameter, I am assuming that's why he thought it might. | ||
(instead of a simple @) | |||
coleman | m: sub foo(@*cmd) { say @*cmd }; my @x = <123>; foo(@x); | ||
camelia | [123] | 18:13 | |
nemokosch | that gets consumed by the bridge | ||
as markdown | |||
[Coke] | m: <123>.WHAT.say | 18:14 | |
camelia | (IntStr) | ||
nemokosch | oh, it's *@, not @* | ||
[Coke] | m: <123 2345>.WHAT.say | ||
camelia | (List) | ||
nemokosch | @* is dynamic | ||
18:15
jpn left
|
|||
(and you should really be using **@ because *@ auto-flattens the received arguments) | 18:15 | ||
Coke: good that you are here, I have a wholesome issue for zef-deps | 18:16 | ||
zef broke one of the tests | |||
coleman | I am indeed mixing up *@ and @*; But the type of <123> was surprising | ||
nemokosch | I would say it kinda makes sense, given the round parens | 18:17 | |
but then | |||
m: <foo >.WHAT.say | |||
why doesn't it run | |||
Raku eval | (Str) | ||
nemokosch | so yeah, not even the whitespace helps here | 18:18 | |
[Coke] | m: qqw{123}.WHAT.say' | 18:19 | |
camelia | ===SORRY!=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> qqw{123}.WHAT.say⏏' expecting any of: infix infix stopper statement end statement modifier stat… |
||
[Coke] | m: qqw{123}.WHAT.say | ||
camelia | (Str) | ||
[Coke] | m: qqw{123 234}.WHAT.say | ||
camelia | (List) | ||
[Coke] | I believe it's just nice syntax for a q*w op. | 18:20 | |
coleman | it seems like only @( ) guarantees a "list literal" | ||
nemokosch | [] kinda does, too, but that's also just a coercion call | ||
so [[whatever]] and [whatever] are the same | |||
gfldex | m: sub foo(@*cmd) { say @*cmd }; foo(@<123>) | 18:21 | |
camelia | (Nil) | ||
nemokosch | @( ) calls .list and [ ] calls .Array iirc | ||
gfldex | m: sub foo(@*cmd) { say @*cmd }; foo(@(<123>)) | ||
camelia | (123) | ||
gfldex | Anon got me again! | ||
nemokosch | sigils without the paren should be forbidden, change my mind 🐸 | 18:22 | |
I don't think it would be even hard to implement that "ban" | 18:23 | ||
just check why $[0, 1] works and remove the matching grammar rule | 18:24 | ||
gfldex | <123> is a plural form for a singular thing. Instead of whining Raku will invode the single argument rule and convert to a singular form. | 18:25 | |
m: %h = :1a, :2b; say %h<a>.WHAT; | 18:26 | ||
camelia | ===SORRY!=== Error while compiling <tmp> Variable '%h' is not declared. Perhaps you forgot a 'sub' if this was intended to be part of a signature? at <tmp>:1 ------> <BOL>⏏%h = :1a, :2b; say %h<a>.WHAT; |
||
gfldex | m: my %h = :1a, :2b; say %h<a>.WHAT; | ||
camelia | (Int) | ||
gfldex | %h<a> does not return a plural form. I my eyes that makes sense. | ||
m: sub foo(@*cmd) { say @*cmd }; foo(123,); | 18:27 | ||
camelia | ===SORRY!=== Error while compiling <tmp> Calling foo(Int) will never work with declared signature (@*cmd) at <tmp>:1 ------> sub foo(@*cmd) { say @*cmd }; ⏏foo(123,); |
||
gfldex | m: sub foo(@*cmd) { say @*cmd }; foo (123,); | ||
camelia | (123) | ||
gfldex | That's the one I don't like much. | ||
[Coke] | gfldex: do you mean to be using @* and not *@ ? | 18:28 | |
we switched halfway through. :) | |||
gfldex | Well, the need of *@ is kinda a consequence of the single argument rule for literals. And to make feed operators work. | 18:29 | |
nemokosch | opened the issue for zef-deps | 18:30 | |
[Coke] | nemokosch: thanks for the bug report, will drop a new version this weekend. | ||
nemokosch | thank you | 18:31 | |
librasteve | dons hard hat | 18:38 | |
m: say (123) ~~ Iterable | |||
Raku eval | False | 18:39 | |
librasteve | m: say (123, 456) ~~ Iterable | ||
Raku eval | True | ||
librasteve | m: say <123> ~~ Iterable | ||
Raku eval | False | ||
librasteve | m: say <123 456> ~~ Iterable | ||
Raku eval | True | ||
librasteve | BUT, the angle brackets are also shorthand for Allomorph literal | 18:40 | |
m: say <123>.WHAT | |||
Raku eval | (IntStr) | ||
gfldex | I strongly advice not to use `~~ Iterable`. | 18:41 | |
librasteve | AND, also shorthand for qqw | ||
m: dd <a b c> | |||
Raku eval | ("a", "b", "c") | 18:42 | |
librasteve | gfldex: why's that then? | ||
gfldex | There is lots of stuff that got a .iterable but does not do Iterable. | ||
librasteve | so what's the best way to test for plurality? | 18:43 | |
nemokosch | or not even .iterable but .list | ||
looking at you, Blobs and Bufs | 18:44 | ||
gfldex | In doubt, don't test for plurality and call .map or .grep . And no, I don't like that answer either. | 18:45 | |
Iterators where added quite late to the language and clash with some of the design. | |||
`for` used to forward to .map and still does when you `do for`. | 18:46 | ||
librasteve | m: 1.map(*.say) | 18:47 | |
Raku eval | 1 | ||
gfldex | Before lizmat added iterators, all you had to do for a custom type was to overload .map and .grep and iteration was covered. | 18:48 | |
Any got .map . | |||
librasteve | so I call map on a single item and get "True" ... how do I use that to test for plurality? | ||
gfldex | Sadly, gather/take is quite slow and that makes iterators useful. | 18:49 | |
librasteve | m: my Buf $b .= new(^10); say $b ~~ Iterable; | 18:50 | |
Raku eval | False | ||
gfldex | You can't really test for plurality. Nor should you need to care. That's what the one argument rule and slurpy arguments are for. | ||
m: Buf.^mro.say; | |||
camelia | No such method 'mro' for invocant of type 'Perl6::Metamodel::ParametricRoleGroupHOW' in block <unit> at <tmp> line 1 |
||
librasteve | so my Buf has a list method but is not iterable ... well that's fine by me | ||
gfldex | m: Buf[8].^mro.say; | ||
camelia | No such method 'mro' for invocant of type 'Perl6::Metamodel::CurriedRoleHOW' in block <unit> at <tmp> line 1 |
||
librasteve | gfldex: I like that usually I don't have to care - but sometimes it may be that I want to care | 18:51 | |
anyway - I'll put on my back burner for now | 18:52 | ||
gfldex | I have the same urge. Raku is not the answer. At least not v6.d and v6.e . | ||
18:53
coleman left
|
|||
librasteve | that's the f burner then | 18:53 | |
18:55
coleman joined
18:59
jpn joined
19:05
jpn left
|
|||
nemokosch | you can't not care when literally most of the essential data constructions may give you a sole instance or a list depending on the data they receive | 19:20 | |
librasteve | m: sub plural(\x) { my $c++ for |x; ($c-1).so } say plural <123>; | 19:56 | |
Raku eval | Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku Strange text after block (missing semicolon or comma?) at /home/glot/main.raku:1 ------> plural(\x) { my $c++ for |x; ($c-1).so }⏏ say plural <123>; expecting any of: infix infix stopper statement end statement modifier statement modifier loop | ||
librasteve | m: sub plural(\x) { my $c++ for |x; ($c-1).so }; say plural <123>; | 19:57 | |
Raku eval | False | ||
gfldex | @librasteve .elems is not a bad idea until you hit 1..* :-> | 19:59 | |
But then, one could argue an infinite list to be just _one_ things. | 20:00 | ||
Plural is equally hard then singular, it seems. | |||
librasteve | well, maybe need ot guard things like infinite ranges... | 20:02 | |
gfldex | You can't really do that, because of iterators. | 20:03 | |
librasteve | sub plural(\x) { return True with x[1]; my $c++ for |x; ($c-1).so } | 20:05 | |
20:05
linkable6 left,
evalable6 left
|
|||
gfldex | In Raku custom types can be infinite and lazy but wont tell you unless you try to iterate 'til the end. | 20:05 | |
20:05
linkable6 joined
|
|||
gfldex | And they don't have to implement AT-POS, either. | 20:06 | |
20:06
evalable6 joined
|
|||
nemokosch | .elems is usually not a good idea unless you really want to get an exact number | 20:09 | |
m: (1..*).elems.say | 20:10 | ||
Raku eval | Exit code: 1 Cannot .elems a lazy list onto a Range in block <unit> at main.raku line 1 | ||
nemokosch | bang | ||
(the bogus error message has been fixed since) | |||
librasteve | thought about .pull-one but then that is not idempotent | 20:11 | |
so basically raku is lisp under the hood | 20:13 | ||
20:14
teatime joined,
teatwo left
|
|||
gfldex | In Lisp, everything is a list. It does not have singular. Raku clearly does. However, it it not your concern to force conversion between singular and plural. You just tell the compiler what you want to do. And then the "strangly consistent"-thing happens. | 20:15 | |
nemokosch | this is not the "strangely consistent" part, this is the "do what I mean" part | 20:18 | |
20:22
teatime left,
teatime joined
20:23
teatwo joined
20:24
jpn joined
20:26
tea3po joined
20:27
teatime left
20:29
jpn left,
teatwo left,
tea3po left
20:30
tea3po joined
20:55
jpn joined
|
|||
lizmat | gfldex: for foo { } is basically foo.iterator.sink-all under the hood | 20:59 | |
foo.map is basically foo.iterator.push-all(@result) | 21:04 | ||
it *is* the same mechanism under the hood, just different methods being called on the iterator | |||
21:07
NemokoschKiwi joined
21:18
tea3po left
21:19
tea3po joined
21:26
NemokoschKiwi left
21:38
deriamis joined
21:41
melezhik joined
|
|||
melezhik | o/ | 21:41 | |
Announcement for SparrowCI users - dev.to/melezhik/sparrowci-has-move...ences-110o | |||
weekly: dev.to/melezhik/sparrowci-has-move...ences-110o | |||
notable6 | melezhik, Noted! (weekly) | ||
21:46
jpn left
21:50
melezhik left
22:50
evalable6 left,
linkable6 left,
evalable6 joined,
defaultxr left,
modula joined
22:52
linkable6 joined
|
|||
ugexe | I’m pretty sure there are precompilation releases for arm | 23:19 |