🦋 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:08 reportable6 left 00:09 reportable6 joined 00:39 KvL left, KvL joined 00:55 Sankalp left 00:56 Sankalp joined 01:50 frost joined 02:27 frost left 02:30 frost joined 02:59 simcop2387 left 03:02 simcop2387 joined 04:02 sourceable6 left, releasable6 left, bisectable6 left, greppable6 left, reportable6 left, benchable6 left, notable6 left, bloatable6 left, coverable6 left, unicodable6 left, tellable6 left, quotable6 left, committable6 left, linkable6 left, nativecallable6 left, evalable6 left, shareable6 left, statisfiable6 left, shareable6 joined, coverable6 joined, bisectable6 joined, tellable6 joined, committable6 joined 04:03 sourceable6 joined, bloatable6 joined, evalable6 joined, unicodable6 joined, statisfiable6 joined 04:04 greppable6 joined, benchable6 joined, linkable6 joined, quotable6 joined, releasable6 joined, nativecallable6 joined 04:05 reportable6 joined, notable6 joined 05:03 mexen joined
sjn is there a way to create character classes based on the content of previous captures in a regex? 05:15
e.g. m/( <[abc]> )( <[abc] - [$1]> )/; 05:18
interpolated character class set operations 05:25
06:03 evalable6 left, linkable6 left, linkable6 joined 06:04 evalable6 joined 06:08 reportable6 left 06:10 reportable6 joined 07:10 evalable6 left, linkable6 left, linkable6 joined 07:11 evalable6 joined 07:24 Sgeo left 07:32 Woodi_ is now known as Woodi 07:36 [Coke]_ joined 07:37 [Coke] left
MasterDuke nope, not without using EVAL 08:14
08:14 dakkar joined
Nemokosch regexes are sort of underpowered once you want to generate them 08:18
Bumped into this just a week ago or so
Praise for RakuAST as usual
Pray*
08:33 dg left 08:39 dg joined 09:39 committable6 left, nativecallable6 left, quotable6 left, shareable6 left, greppable6 left, coverable6 left, unicodable6 left, evalable6 left, sourceable6 left, reportable6 left, statisfiable6 left, tellable6 left, notable6 left, bloatable6 left, benchable6 left, linkable6 left, bisectable6 left, releasable6 left, coverable6 joined, nativecallable6 joined 09:40 reportable6 joined, committable6 joined, tellable6 joined, notable6 joined, shareable6 joined, greppable6 joined, statisfiable6 joined, evalable6 joined, benchable6 joined 09:41 releasable6 joined, quotable6 joined, linkable6 joined, bisectable6 joined 09:42 bloatable6 joined, sourceable6 joined, unicodable6 joined
lizmat weekly: www.facebook.com/wgavdijk/posts/pf...jcb9CWhrsl 09:49
notable6 lizmat, Noted! (weekly)
El_Che (link is not accessible without login in) 10:26
sienet_ja_LSD[m] uploaded an image: (138KiB) < libera.ems.host/_matrix/media/r0/d.../image.png > 10:28
here's most of it
El_Che thx :) 10:29
lizmat sienet_ja_LSD[m]++ 10:42
10:42 linkable6 left, evalable6 left 10:43 evalable6 joined 10:44 linkable6 joined
lizmat weekly: wendyga.wordpress.com/2022/06/16/we-will-raku/ 10:45
notable6 lizmat, Noted! (weekly)
11:44 linkable6 left, evalable6 left, notable6 left 11:45 notable6 joined, evalable6 joined, linkable6 joined 12:06 reportable6 left, [Coke]_ is now known as [Coke] 12:08 reportable6 joined
SmokeMachine m: my @a = <a b c>; say $_, " -> ", ?m/(@a)<{@a.grep: { $_ ne $0 }}>/ for <ab bc ca aa bb cc> # son: not exactly what you want, but would that work? 12:15
camelia ab -> True
bc -> True
ca -> True
aa -> False
bb -> False
cc -> False
SmokeMachine m: say $_, " -> ", so m/( <[abc]> )( <[abc]> ) <?{$1 ne $0}>/ for <ab bc ca aa bb cc> # sjn or this 12:24
camelia ab -> True
bc -> True
ca -> True
aa -> False
bb -> False
cc -> False
SmokeMachine m: say $_, " -> ", so m/(<[abc]>) ** 2 <?{infix:<ne>(|$0)}>/ for <ab bc ca aa bb cc> # or 12:28
camelia ab -> True
bc -> True
ca -> True
aa -> False
bb -> False
cc -> False
SmokeMachine sjn: ☝️ 12:29
12:34 lichtkind joined 13:23 Kaiepi joined 13:24 jgaz joined 13:29 morte_ joined
[Coke] forgot he wrote github.com/coke/raku-cal to have 'cal' on windows. wow, that is old and needs some updating. 13:31
(needs to switch to app-as-shim-for-lib model and add a META6.json)
dakkar uh… I didn't know you could put a pair inside a «» 13:39
m: say qq:ww{:a(1) b}.map: { $^a.WHAT }; 13:40
camelia ((Pair) (Str))
dakkar m: say qq:w{:a(1) b}.map: { $^a.WHAT };
camelia ((Str) (Str))
dakkar docs.raku.org/language/quoting doesn't say anything about that… docbug?
m: say qq:ww{:a(1)}.map: { $^a.WHAT } 13:45
camelia ((Pair))
dakkar m: say qq:ww{:a(1)}
camelia
dakkar uh… why is it not printed? 13:46
m: say qq:ww{:a(1) b}
camelia (a => 1 b)
dakkar is there a special case for list-contaning-one-pair in `say` or `gist`?
does it get interpreted as a named argument?? 13:47
(roast does specify that qqww recognises pairs, in `S02-literals/quoting.t`) 13:49
13:57 morte_ left 13:58 jgaz left 14:12 ocomporto left
dakkar uh… 14:18
m: say «:a(1)»
camelia a => 1
dakkar m: say Q:qq:ww:v{:a(1)}
camelia a => 1
dakkar m: say qq:ww:v{:a(1)}
camelia a => 1
dakkar m: say Q:qq:ww{:a(1)}
camelia
dakkar ☝ I'm confused
why does `say` behave differently depending on the `:v` adverb to `Q`? 14:20
14:24 frost left 14:38 vrurg_ is now known as vrurg, Sgeo joined
[Coke] :v is documented as "convert (value) to allomorph if possible" 14:49
ugexe m: say Q:qq:ww{:a(1),} 14:50
camelia (a => 1 ,)
ugexe docs.raku.org/syntax/Single%20Argument%20Rule 14:51
[Coke] ordering seems to matter, :v:ww vs. :ww:v 14:52
m: say qq:v:ww{:a(1)} 14:53
camelia (a 1)
[Coke] m: say qq:v{:a(1)}
camelia :a(1)
dakkar ugexe: I'm not sure how single-argument applies without an iterator…
[Coke]: that last one produces a string, as expected 14:54
[Coke] for this kind of debugging, 'dd' may be more instructive than say
dakkar tried that, didn't help
ugexe well that would depend on the signatures of all the functions that end up getting called
dakkar ugexe: proto say(|), multi say(\x), multi say(|) 14:56
github.com/rakudo/rakudo/blob/mast...#L109-L123 14:57
ugexe is say really the only function used? 14:58
dakkar how would I check that?
ugexe i.e. Q v etc don't end up calling any functions?
dakkar m: my @a=qq:ww:v{:a(1)}; dd @a 14:59
camelia Array @a = [:a(1)]
dakkar m: my @a=qq:ww{:a(1)}; dd @a
camelia Array @a = [:a(1)]
dakkar I *think* that means the difference is in `say`, but I don't know how to check better
15:01 morte_ joined
[Coke] you know say calls '.gist', yes? 15:01
dakkar yes 15:02
m: print qq:ww{:a(1)}.gist
camelia a => 1
dakkar then again…
m: print qq:ww:v{:a(1)} 15:03
camelia a 1
dakkar m: print qq:ww{:a(1)}
camelia ( no output )
dakkar *something* is up
it may well be correct and specced, but I'm not sure where to look
m: print qq:ww{:a(1)}.gist
camelia a => 1
dakkar m: print qq:ww:v{:a(1)}.gist
camelia a => 1
ugexe i'm not suggesting its correct or specced, just that it seems like single arg rule might be behind it 15:04
dakkar maybe? why would `:v` (make allomorphs) affect that?
ugexe i dunno, presumably :v calls some function to turn a thing into an allomorph? 15:05
dakkar (my starting assumption is "I'm missing something", not "stuff is broken" 😁)
ugexe: but the weirdness only happens when the result of the quoting is used as arglist for a different call… 15:06
should I open an issue? even if it turn out to be correct behaviour, it may still lead to some doc changes 15:07
m: print (qq:ww:v{:a(1)}) 15:09
camelia a 1
dakkar m: print (qq:ww{:a(1)})
camelia a 1
dakkar still a single argument, but gets printed 15:10
m: print qq:ww{:a(1)}
camelia ( no output )
dakkar hmmm 15:12
m: sub x(|c) { dd c }; x qq:ww{:a(1)}; x qq:ww:v{:a(1)}
camelia \(:a(1))
\("a" => 1)
dakkar I don't understand what I'm seeing
m: sub x(|c) { dd c }; x qq:ww{:a(1)}; x qq:ww:v{:a(1)}; x (qq:ww{:a(1)}) 15:13
camelia \(:a(1))
\("a" => 1)
\("a" => 1)
dakkar opens an issue 15:15
Nemokosch hello 15:16
do you have an idea when 6.e can be ready?
or what will it include, even 15:17
15:20 jgaz joined 15:24 Altai-man left 15:25 sena_kun joined
dakkar github.com/rakudo/rakudo/issues/4958 let's see what other people say 15:26
15:51 johnjaye left
gfldex <@297037173541175296> the plan is to have it released with or shortly after RakuAST. That plan might be changed, tho. You can have a peek at: github.com/rakudo/rakudo/tree/master/src/core.e 16:10
16:10 jgaz left
Nemokosch umm... what to see here? 😅 16:14
16:28 sena_kun left 16:30 sena_kun joined 16:32 dakkar left 16:52 eseyman left 16:53 eseyman joined 16:55 Kaiepi left
xinming m: my %h = :a, :b, :c; my @a = <a b>; %h{@a}.raku.say; 17:02
camelia (Bool::True, Bool::True)
xinming In this case, How can we also return a Hash rather than a List please? 17:03
moritz m: my %h = :a, :b, :c; my @a = <a b>; %h{@a}:kv
camelia ( no output )
moritz m: my %h = :a, :b, :c; my @a = <a b>; say %h{@a}:kv
camelia (a True b True)
xinming thx
moritz m: my %h = :a, :b, :c; my @a = <a b>; say %h{@a}:pairs
camelia Cannot resolve caller postcircumfix:<{ }>(Hash:D, Array:D, :pairs); none of these signatures matches:
(\SELF, Mu \key)
(\SELF, Mu \key, Mu \ASSIGN)
(\SELF, Mu \key, Mu :$BIND! is raw)
(\SELF, Mu \key, Bool(Any) :$delete!)
moritz m: my %h = :a, :b, :c; my @a = <a b>; say %h{@a}:p
camelia (a => True b => True)
xinming thanks
moritz list of pairs, not hash, but that's just one coercion away
you're welcome
17:05 jgaz joined 17:24 Kaiepi joined 17:38 kawaii left 18:07 reportable6 left
[Coke] lizmat: anyone on RSC looking into replacing the perl6-users mailing list? 18:08
18:09 reportable6 joined
lizmat [Coke]: no, not at the moment 18:41
volunteers welcome
[Coke] might be worth asking if the folks supporting the perl* mailing lists can help; There wasn't interest in previous years, but now that we're one happy YAS... 18:49
19:09 evalable6 left, linkable6 left 19:10 evalable6 joined 19:11 linkable6 joined 19:15 morte_ left 19:20 MasterDuke left
drakonis what does YAS stand for? 19:23
lizmat Yet Another Society 19:33
the official name of The Perl Foundation and the Raku Foundation
TPF and RF are so-called "doing business as" names
19:34 MasterDuke joined
drakonis i see 19:54
lizmat or "dba's" for short
drakonis will the upcoming perl/raku conference will be recorded?
guifa drakonis that's the plan, but it won't be livestreamed 20:01
drakonis i see, alright then.
20:06 morte_ joined 20:07 p6steve joined
guifa (the goal is to try to really go all in on the idea of an in-person conference. I'm really looking forward to it) 20:10
drakonis it'll be quite nice, nonetheless 20:12
guifa I've just got to finish up my talks. I'm a masochist and ended up agreeing to do three of them lol 20:13
drakonis good job! 20:14
that said
coerce protocol talk? 20:15
guifa for the new COERCE method that vrurg added to core
drakonis oh, neat.
how new is that one? 20:16
guifa I think it the PR was committed late last year maybe?
drakonis oh, neat.
p6steve a coerce talk is great - the raku approach to gradual typing and coercion is quite cool... we know it but many don't 20:18
drakonis indeed it is
p6steve also nice to hear the subtleties, trade offs and design approach (no pressure)
drakonis i got into a perl discussion earlier today and rperl was brought up 20:19
it seems like such a weird thing
coleman I would be interested in a mailing list for Raku 20:20
drakonis it is very much a half measure towards bringing raku and perl together
lizmat rperl?
drakonis but it has the ability to output executable binaries
rperl.org/
lizmat bringing perl and raku together ?
yeah, I know about rprel
that page does not mention raku 20:21
drakonis it was written before the rename
p6steve never heard of it - they (rperl.org) do "making perl run faster" -- no mention of raku
drakonis back when it was perl 6
it is part of a thing called perl11 i guess
lizmat yeah, it parses a subset of Perl and generates C++ code
drakonis it is more like nqp then 20:22
p6steve no mention of perl6 or raku
lizmat perl11 is a pipe dream of the developer of rperl
drakonis yes it is
rperl.org/the_book_of_rperl.html
it is a strange pipe dream
p6steve tobacco? 20:23
drakonis this is not helpful documentation
no
hallucinogenic drug fueled trips
the documentation on cpan is a lot better
vrurg rperl is mosly about producing binaries. Not even bytecode, by binaries as such.
drakonis i'm interested only in the binaries bit but in raku 20:24
which has been stalled for some time
metacpan.org/release/WBRASWELL/RPe...earning.pm
vrurg It makes me feel weird because either it's Perl with all its power; or it's C or Rust for the performance. But castrated Perl??
drakonis that sounds accurate 20:25
sienet_ja_LSD[m] I would use rperl if the documentation was better
drakonis metacpan.org/release/WBRASWELL/RPe...b/RPerl.pm
the documentation is ugly and the cpan docs are serviceable
it looks a lot like a half-measure since it has a lot of hardcoded stuff that looks like it came from raku
sienet_ja_LSD[m] I was supposed to do some OO project with it, but I couln't do it 20:26
lizmat for all practical purposes, rperl appears to be stalled for almost 2 years now?
drakonis so it is.
El_Che I don't think it went further than esoteric perl being interesting but not used at large 20:28
sienet_ja_LSD[m] maybe I'll try it again if I'll play around with the examples
drakonis it is more interesting to use raku anyways
github.com/wbraswell/rperl/tree/master/docs this has some silly bits
in special the modes 20:29
rperl.org/the_low_magic_perl_commandments.html this bit in particular though 20:30
it seems to suffer a lot from perl collapsing under the weight of its age 20:31
guifa the author of that page is … eccentric. 20:32
drakonis i'm... aware... 20:33
p6steve yes, raku is a great lifeboat for perl nuggets - i am really impressed by metacpan.org/pod/FFI::Platypus - and trying to rekindle in Dan::Polars
El_Che trying to get C performance in a safe language is kind of the Holy Grail :) 20:34
p6steve err - no its Rust
El_Che nah
drakonis i wonder why rperl has a operator for crypt lol
p6steve not fast? not safe?
El_Che it came and it did not take over the world, and not for lack of attention
drakonis rust has been eating up some marketshare 20:35
it takes time to displace the existing options
El_Che slowly
p6steve yeah - I've spent weeks knee deep in rust and it's hard
drakonis since you can't replace C or C++ with it overnight
then there are spaces that it needs a lot of investment to break into
El_Che p6steve: I like the simplicity of Go 20:36
drakonis like the data science space
El_Che p6steve: so did most devops people so it took that space where it was not intended to
p6steve you cant replace [Perl|Python|Ruby|PHP] (with raku) overnight either
guifa As with all things, there are trade offs
drakonis indeed not.
El_Che it's a different comparison 20:37
drakonis you can however write something useful that will slowly eat up the marketshare at the edges
wrt replacing the common scripting languages
El_Che there is stuff where perl and co still beat raku
drakonis except usability and long term flexibility
20:37 moon-child left
El_Che there are advantages, but people care about different things 20:38
ans like p6steve implied, there is inertia
drakonis and inertia is truly a powerful thing 20:39
p6steve El_Che: then try Occam! 20:40
El_Che 's razor
:) 20:41
when and if I had the time I would like to pick up some rust
drakonis occam, eh?
p6steve El_Che: can always work on Dan::Polars ...
El_Che having a look 20:42
p6steve sadly a bit early
El_Che p6steve: you're into data science :)
p6steve learning as I go 20:43
yes occam: if it can fail, it will fail
El_Che the rust integration looks more promising to me than inlining python 20:44
python (and perl and ruby) are terrible to deploy
(that's why go took devops from python)
so maintaining several stacks of languages is not something I would like to do
but on the other hand, I don't see people porting Panda :) 20:45
p6steve we need Python for some level of feature completeness, interop for newcomers/compatibity and workflows to eg plotting
BUT rust/pandas/arrow2 is a good match for raku (fast, lazy, better API)
rust is nice to deploy as a lib 20:46
just a pig to code 20:47
El_Che so nativecall is lipstick :) 20:48
p6steve the notion with Pandas is just EVAL anything that looks like df.pl.XXX() ... so just have to maintain as a proxy
well Polars Python binding uses maturin - we have nativecall :: rust FFI and nothing in between 20:51
no - raku is the lipstick! 20:52
drakonis lipstick on a pig, eyyyy 20:56
20:58 jgaz left
p6steve El_Che: do consider helping on Dan::Polars - it has the right levels of abstration and performance to be awesome 20:59
El_Che: and you can add rust to your CV 21:00
drakonis how long until rakuast is merged into the main branch? 21:02
also, how long until the opposite happens?
El_Che p6steve: I am not in that field
p6steve El_Che: ;-) 21:52
21:58 evalable6 left, linkable6 left 22:00 evalable6 joined 22:01 linkable6 joined 22:07 morte_ left
Geth ecosystem: f1858bec0e | (Elizabeth Mattijsen)++ | META.list
Remove Spreadsheet::XLSX

It lives in the zef ecosystem now
22:47
kybr i'm trying the code here: docs.raku.org/type/IO::Notificatio...watch-path ;; except, i am using a different file (not syslog) and updating manually. I only see a couple of events come out of the tap. Is this expected behaviour? 22:52
that is, saving the watched file seems to produce a file-renamed event and a file-changed event after the first update, but subsequent manually updates to the file produce no events. 22:54
23:07 evalable6 left, linkable6 left 23:10 evalable6 joined, linkable6 joined