🦋 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 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 8 June 2022. |
|||
00:06
reportable6 left
00:07
reportable6 joined
00:12
vrurg left
00:13
vrurg joined
00:32
wcs joined
00:40
frost joined
01:15
cbk joined
01:53
Kaiepi left
01:54
cbk left
02:13
cbk joined
02:47
wcs left
02:53
wcs joined
03:10
swaggboi left
03:21
swaggboi joined
03:40
Kaiepi joined
04:27
Guest83 joined
04:29
cbk left
04:30
cbk joined
04:31
Guest83 left,
cbk_ joined
04:32
cbk__ joined
04:35
cbk left,
cbk_ left
04:37
cbk__ left,
cbk joined
04:59
cbk left
05:37
wcs left
06:07
reportable6 left
06:08
reportable6 joined
06:18
Kaiepi left
06:34
Sgeo left
06:54
abraxxa joined
07:01
abraxxa left
07:02
abraxxa joined
07:50
dakkar joined
|
|||
El_Che | I am not enough of a C programmer to appreciate make, but if your language's project need it, you are doing somethiung wrong :) twitter.com/jjmerelo/status/1541505956986724352 | 08:05 | |
I have a few colleagues that used make to build go programs (a one liner), guess who put flames into that :) | 08:06 | ||
guifa | trying to convert ECMA Regex to Raku regex is more complex than it seems at first | 08:14 | |
Nemokosch | Does it seem simple? | 08:48 | |
guifa | Yeah, you'd think it'd be | ||
but the most complicated one so far has been on the surface devilishly simple | |||
how would you convert ECMA /(a(b))(c)/ to Raku? | 08:49 | ||
08:50
linkable6 left,
evalable6 left
08:52
linkable6 joined,
evalable6 joined
|
|||
guifa | In ECMA, $0 = 'abc', $1 = 'ab', $2 = 'b', $3 = 'c'. In Raku, $0 = 'ab', $0[0] = 'b', $1 = 'c', | 08:54 | |
nine | Just linearize the Match objects into a list using depth first search | 08:57 | |
guifa | nine: yeah, I thought about that, but ultimately went the lazy route, and keep an @*positional and %*named index on hand, and at the end of the regex, apply a role that overrides the AT-POS and AT-KEY methods 🙃 | 09:00 | |
ECMA /(?<a>a)(b)/ becomes | 09:15 | ||
` /:my (@*POSITIONAL,%*NAMED);{@*POSITIONAL.push: $/}$<a>=(a{%*NAMED<a> = $/})(b{@*POSITIONAL.push: $/}){$/ does anon role ECMA-Match {method AT-POS($pos){@*POSITIONAL[$pos]};method AT-KEY($key){%*NAMED{$key}}}}/ ` | |||
admittedly, hideous, but since no end user will ever see it, meh :-) | 09:16 | ||
09:21
melezhik joined
|
|||
melezhik | 0/ | 09:21 | |
El_Che | big head today? | 09:22 | |
melezhik | Yeah, I don't how to do the small one ))) | 09:23 | |
Don't know | |||
Not an irc geek he-he ))) | |||
El_Che | o/ | ||
~o|~ | 09:24 | ||
help, I can' t swim | |||
melezhik | Need to copy paste ))) | ||
What's up | |||
El_Che | no "o" in a cyrillic keyboard? | ||
melezhik | o/ | 09:25 | |
Is it better? | |||
... it is ))) | |||
Should have done lower case ))) | |||
What's actually up? Slowly preparing sparkyci + alpine packages for Raku modules integration | 09:26 | ||
I have an idea that people would need fast installation of their modules system wide using alpine apk | 09:29 | ||
Nemokosch | Is the order of captures different? | 09:31 | |
guifa | Nemokosch: Yeah. EMCA does flat ordering, and Raku nests | 09:32 | |
tellable6 | guifa, I'll pass your message to Nemokosch | ||
09:34
melezhik left
09:35
melezhik joined
|
|||
melezhik | . | 09:35 | |
09:37
melezhik left,
sena_kun joined
09:41
melezhik joined,
melezhik left
09:42
melezhik joined
09:43
melezhik left
09:46
melezhik joined
09:47
melezhik left
|
|||
Nemokosch | Huh | 09:47 | |
09:51
sena_kun left
09:52
sena_kun joined
09:55
frost left
|
|||
guifa | Just lots of little gotchas — like . in ECMA is equivalent to <-[\n]> in Raku | 10:01 | |
10:03
melezhik joined
|
|||
melezhik | So, I am testing a water with potential application of sparkyci for other languages , I raised a question on HN, a feedback would be appreciated - news.ycombinator.com/item?id=31998812 | 10:05 | |
10:07
melezhik left
10:08
melezhik joined
|
|||
melezhik | . | 10:08 | |
10:11
melezhik left
10:14
melezhik joined
|
|||
Geth | ecosystem: f5f1764b87 | (Elizabeth Mattijsen)++ | META.list Fix URL of the Digest module (again) |
10:17 | |
10:17
frost joined
10:19
melezhik left
10:27
dogbert17 joined
10:58
jaguart joined
11:18
frost left
11:26
frost joined
12:07
reportable6 left
12:10
reportable6 joined
12:15
sena_kun left
12:18
sena_kun joined
12:20
frost left
12:47
nine left,
m_athias left,
nine joined
12:48
m_athias joined
|
|||
abraxxa | Util: thank you for www.youtube.com/watch?v=rSP_GgcHQ0Q ! I'm no fan of YouTube comments which might not reach you. | 12:49 | |
Geth | ecosystem: b5e6be17f9 | (Elizabeth Mattijsen)++ | META.list Physics::Measure lives in the zef ecosystem now |
13:02 | |
13:18
morte_ joined
13:23
sena_kun left
13:24
sena_kun joined
13:26
wcs joined
|
|||
guifa | well that's surprisingly Englis-like | 13:31 | |
`state @ = eager gather take self and find-matches-in self, :type<positional>;` | |||
14:26
linkable6 left,
evalable6 left,
evalable6 joined
14:27
linkable6 joined
|
|||
abraxxa | Raku remembers the type initially defined for a scalar variable, e.g. my Int $speed = 125; how can I display this type enforcement? | 14:38 | |
does the raku repl have some sort of autocomplete? double-tab or ? doesn't do anything | 14:39 | ||
guifa | m: my Int $speed; say $speed.WHAT | 14:45 | |
camelia | (Int) | ||
15:02
Sgeo joined
|
|||
[Coke] | that's not exactly right: | 15:12 | |
m: my Numeric $a; $a = 3; dd $a.WHAT; dd $a.VAR.WHAT | |||
camelia | Int Scalar |
||
[Coke] | (note that "Numeric" as the restriction isn't there.) | ||
m: my Numeric $a; dd $a.WHAT; $a = 3; dd $a.WHAT; dd $a.VAR.WHAT | |||
camelia | Numeric Int Scalar |
||
[Coke] | er, not there post-assignment. | ||
m: my Numeric $a; dd $a.WHAT; $a = 3; dd $a.WHAT; dd $a.VAR.WHAT; dd $a | 15:17 | ||
camelia | Numeric Int Scalar Int $a = 3 |
||
[Coke] | (and dd only has the current type, not the type restriction also) | ||
15:33
sena_kun left
|
|||
guifa | [Coke] eh yeah, you're right. I typed without thinking | 15:34 | |
in other news, for making slangs, I just wrote a script to automagically namespace (and denamespace) a grammar | |||
ECMA regexen here we come | 15:35 | ||
[Coke] | you can get it back by assigning Nil, checking the variable's type (Then Numeric), but that isn't helpful | 15:38 | |
m: my Numeric $a; dd $a.WHAT; $a = 3; dd $a.WHAT; $a = Nil; dd $a; | |||
camelia | Numeric Int Numeric $a = Numeric |
||
nine | m: my Numeric $a; $a = 3; dd $a.VAR.of | ||
camelia | Numeric | ||
[Coke] | OF! | ||
Thank you, nine! | |||
nine | Turns out, implementing a compiler frontend teaches you a _lot_ about a language | ||
[Coke] | docs.raku.org/type/Scalar#method_of | 15:39 | |
:)\ | |||
er, :) | |||
nine | I guess reading the docs would do the same :D | ||
Arguably writing a compiler is more fun though ;) | |||
abraxxa | where is .of documented? I was looking the type tree up to docs.raku.org/type/Mu as I thought it must be defined there so every type has the method but can't find it | 15:55 | |
also I was expecting the methodname to be all uppercase like WHAT | |||
[Coke]: ah, didn't grasp that your message was about my question, thanks | 15:56 | ||
so not all types have a type restriction I can check using .of? | |||
Array has .of but defined directly and not subclassed from somewhere upwards the class hierarchy | 15:58 | ||
same for Hash | |||
Rat is missing of! | 16:00 | ||
ah, of is a method of Scalar which isn't a base class of Str, Int, ... but the thing the VAR method returns?! | 16:02 | ||
which isn't documented ;-( | 16:03 | ||
dutchie | abraxxa: see docs.raku.org/language/containers | ||
16:03
sena_kun joined
|
|||
abraxxa | or at least it's documented here docs.raku.org/language/mop#VAR but not in the type docs which is always the place I look at when I want to know what methods a type has | 16:04 | |
doesn't the container have the type constraint which dictates what it can hold? | 16:05 | ||
dutchie | exactly, that's the Scalar that .VAR accesses | 16:06 | |
abraxxa | so for example a variable my $a = 'foo'; is of type Scalar, holds a, no idea what it's called, of type Str? | 16:07 | |
no, because then I would be able to call .of on the container object | |||
container -> Scalar -> Str? | 16:08 | ||
so three objects for a single var? | |||
dutchie | the container is the Scalar (by default with a constraint of Any), holding the Str | ||
m: my $a = 'foo'; say $a.VAR.of; say $a.WHAT | |||
camelia | (Mu) (Str) |
||
dutchie | oh, apparently Mu, not Any | 16:09 | |
abraxxa | so why would I need to call .VAR on the Scalar to call one of its methods? | ||
dutchie | because normally the Scalar hides itself | 16:10 | |
abraxxa | so $a is the Scalar which decontainerizes to the Str it holds for all method calls and if you want to get at the Scalar itself you'd need .VAR to get at it? | ||
dutchie | exactly | ||
abraxxa | Oh man! | ||
every time I look at Raku I get turned down by the type system! | |||
and I managed to grap and digest Typescript in just months | |||
can you improve the docs so they contain EVERY method a type has? | 16:12 | ||
16:35
mexen joined
16:37
abraxxa left
16:41
morte_ left
|
|||
tonyo | . | 16:43 | |
nine | abraxxa: as far as I can tell thats already the case | 16:57 | |
tellable6 | nine, I'll pass your message to abraxxa | ||
17:01
dakkar left
17:03
eseyman joined
17:15
jaguart left
|
|||
[Coke] | Sorry, which method was missing from where? | 17:16 | |
Note that VAR isn't technically a method | 17:23 | ||
17:31
jaguart joined
|
|||
[Coke] points to docs.raku.org/language/typesystem#...thod_names | 17:37 | ||
TIL about "is hidden" | 17:42 | ||
m: class A is hidden { method m {say "eek"} }; class B is A { method m { nextsame }}; B.new.m | 17:43 | ||
camelia | ( no output ) | ||
18:06
reportable6 left
18:09
reportable6 joined
18:59
swaggboi left
19:06
xinming joined
19:07
xinming left
19:09
xinming joined
19:15
swaggboi joined
19:16
swaggboi joined
|
|||
jjatria | Ok, so this should let me implement SameSite: gitlab.com/jjatria/publicsuffix | 19:32 | |
20:16
evalable6 left,
linkable6 left
20:17
evalable6 joined
20:18
linkable6 joined
20:24
morte_ joined
20:49
swaggboi left,
Xliff joined
|
|||
Xliff | m: my %hash; role HashDefault[\T] { method AT-KEY (\k) { callwith(k) // T }; }; class C { }; %hash does HashDefault[C]; %hash<a> = 1; %hash<a>.say; %hash<b>.say; %hash.^name.say | 20:54 | |
camelia | 1 (C) Hash+{HashDefault[C]} |
||
tellable6 | 2022-07-05T14:39:57Z #raku <dakkar> Xliff: github.com/LLFourn/p6-CompUnit-Uti...-exporting may help make your life easier | ||
Xliff | .tell dakkar Thanks | ||
tellable6 | Xliff, I'll pass your message to dakkar | ||
Xliff | Hash with a default value. Anybody see any obvious holes? | 20:55 | |
japhb | m: my %hash is default(42); say %hash<foo> # Xliff | 21:00 | |
camelia | 42 | ||
21:07
swaggboi joined
21:35
clarjon1 joined
21:51
Sgeo_ joined
21:54
Sgeo left
21:57
morte_ left
21:58
sena_kun left
|
|||
Voldenet | Xliff: there is one obvious hole | 22:25 | |
m: my %hash; role HashDefault[\T] { method AT-KEY (\k) { callwith(k) // T }; }; class C { }; %hash does HashDefault[C]; %hash<a> = Nil; %hash<a>.say; %hash<b>.say; %hash.^name.say | |||
camelia | (C) (C) Hash+{HashDefault[C]} |
||
Voldenet | m: my %hash; role HashDefault[\T] { method AT-KEY ($k, |) { self.EXISTS-KEY($k) ?? nextsame() !! T }; }; class C { }; %hash does HashDefault[C]; %hash<a> = Nil; %hash<a>.say; %hash<b>.say; %hash.^name.say | 22:35 | |
camelia | (Any) (C) Hash+{HashDefault[C]} |
||
Voldenet | double lookup | ||
but :p is also supported which is nice | |||
m: my %hash; role HashDefault[\T] { method AT-KEY ($k, |) { self.EXISTS-KEY($k) ?? nextsame() !! T }; }; class C { }; %hash does HashDefault[C]; %hash<a> = Nil; %hash<a b>.say; %hash<a b>:p.say; %hash.^name.say | 22:36 | ||
camelia | ((Any) (C)) (a => (Any)) Hash+{HashDefault[C]} |
||
Voldenet | nevermind, :p works either way ┐(´~`;)┌ | 22:37 | |
22:40
Xliff_ joined
23:11
jaguart left
23:49
swaggboi left
|