🦋 Welcome to the former MAIN() IRC channel of the Raku Programming Language (raku.org). This channel has moved to Libera (irc.libera.chat #raku)
Set by lizmat on 23 May 2021.
00:01 _jrjsmrtn left
guifa codesections: you move too fast 00:02
I'm in the middle of typing up a like two page justification :-)
codesections ha, sorry :)
00:02 reportable6 left 00:04 reportable6 joined 00:29 RaycatWhoDat joined, holly_ joined
RaycatWhoDat If I wanted to create different syntax for named captures, how would I do that in Raku? 00:29
i.e. I would like to declare something like m:g/ ^ $<firstName>=.+ ' ' $<lastName>=.+ $ / as m:g/ ^ @firstName ' ' @lastName $ / 00:30
Or some sort of syntax where I can just use a container name and Raku knows to bind whatever matches that to those containers 00:31
guifa You mean something like m:g/ ^$<first>=@first $/ ? 00:44
my @first = <John Sally Bob>; say "John" ~~ / $<first>=@first /
evalable6 「John」
first => 「John」
guifa codesections: my treatise is posted ;-) 00:45
codesections: and updated to fix a few things 00:52
RaycatWhoDat guifa, not exactly. I mean, capturing everything that part of the match into a variable named such 00:57
github.com/RayMPerry/kitchen-sink/...-parse.txr 00:58
So, on line 4, given a line of a CSV file, it will take the longest match of characters and bind it to `first_name` to be used later 00:59
So, I was wondering if there was anything that could do that. If there isn't, how hard would it be to implement? 01:00
guifa If you need to use it in the regex itself, not too bad: 01:01
m: 'abcdefc' ~~ / $<foo>='c' .*? $<foo> /; say $/
camelia 「cdefc」
foo => 「c」
guifa but if you want to use it outside of the regex, you'd need to create a regex slang
And … that's hard :-) 01:02
RaycatWhoDat Gotcha 01:04
guifa also codesections given our previous discussion on infix:<eqv> 01:18
m: my $a = Date.new: :2021year, :1month, :1day, :formatter{'A'}; my $b = $a.clone: :formatter{'B'}; say $a eqv $b; 01:19
camelia True
guifa but they have different formatter attributes :-)
01:29 evalable6 left, linkable6 left 01:30 evalable6 joined 01:31 linkable6 joined 01:32 RaycatWhoDat left
codesections guifa: that seems like an excellent example of why &[eqv] shouldn't work that way. 01:46
guifa ah but where it gets more interesting is
m: my $a = Date.new: :2021year, :1month, :1day, :formatter{'A'}; my $b = $a.clone: :formatter{'B'}; say $a.raku; say $b.raku
camelia Date.new(2021,1,1)
Date.new(2021,1,1)
codesections m: my $a = Date.new: :2021year, :1month, :1day, :formatter{'A'}; say $a.^attributes.map({.has_accessor}) 01:47
camelia (True True True True True)
codesections I get why the .raku output is simplified (and agree that it should be). But two objects with different public attributes shouldn't be eqv 01:48
(I don't really think they should be with different private attributes, but I see the counter argument)
guifa To be fair, I don't think the formatter for Datish is really designed to be public 01:49
codesections it seems like a public, read-only attribute to me 01:50
(e.g., set via .new, updateable via .clone, viewable with an accessor ) 01:51
m: my $dt = Date.new: '2015-12-31', :formatter{sprintf "%02d/%02d/%04d", .month, .day, .year }; say Date.new('0000-01-01').formatter.($dt) 01:55
camelia Impossible coercion from 'Date' into 'Callable': no acceptable coercion method found
in block <unit> at <tmp> line 1
codesections m: my $dt = Date.new: '2015-12-31', :formatter{sprintf "%02d/%02d/%04d", .month, .day, .year }; my $b Date.new('0000-01-01'); say $b.formatter.($dt) 01:56
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3%02d/%04d", .month, .day, .year }; my $b7⏏5 Date.new('0000-01-01'); say $b.formatte
expecting any of:
infix
infix stopper
codesections m: my $dt = Date.new: '2015-12-31', :formatter{sprintf "%02d/%02d/%04d", .month, .day, .year }; my $b = Date.new('0000-01-01'); say $b.formatter.($dt)
camelia Impossible coercion from 'Date' into 'Callable': no acceptable coercion method found
in block <unit> at <tmp> line 1
codesections ohh, b/c it's a Callable:U 01:57
m: my $dt = Date.new: '2015-12-31', :formatter{sprintf "%02d/%02d/%04d", .month, .day, .year }; my $b = Date.new('0000-01-01'); say $dt.formatter($b)
camelia Too many positionals passed; expected 1 argument but got 2
in block <unit> at <tmp> line 1
codesections m: my $dt = Date.new: '2015-12-31', :formatter{sprintf "%02d/%02d/%04d", .month, .day, .year }; my $b = Date.new('0000-01-01'); say $dt.formatter.($b)
camelia 01/01/0000
guifa ^^ why I think .fmt("%m/%d%Y" would be better ;-) 02:16
codesections Fair. Though, bikeshedding a bit, I wonder if it should be .date-fmt or something and also exposed as a sub. e.g., multi date-fmt(Str $fmt, Date $date) {...}; multi date-fmt(Str $fmt, Str $date-str) {...} 02:21
then you could do something like date-fmt("%m/%d/%Y", '2021-07-17') 02:22
(and that would avoid confusion with the other .fmt methods, which all use printf fmt string) 02:23
S/(string)/$0s/
02:32 evalable6 left, linkable6 left, linkable6 joined 02:34 evalable6 joined
guifa Yeah, I thought about that. THe nice thing is that's a decision that can be made between writing the code and integrating it to the code base :-) 02:36
Also the one format code that's driving me made is N (for fractional seconds). It's an extension whose width clips it (unlike all the others), which basically requires special casing and destroys the elegance of my implementation =/ 02:40
elcaro some sloppy date parser/formatter I wrote a while ago: github.com/0racle/p6-dately 03:30
just playing with some ideas, but, yeah i would like some strptime/strftime functions 03:31
i've pulled them in via NativeCall somewhere
I'm no NativeCall export, so I think it's not perfect... lemme see if I can dig it up
03:34 linkable6 left, evalable6 left
elcaro NativeCall strftime/strptime: gist.github.com/0racle/67c4e9e8f51...1ac2162f3c 03:35
03:35 evalable6 joined, linkable6 joined
guifa elcaro: not too different in concept from what I've got (using a hash for all the different formatters), in particular 03:48
I avoided the grammar though to ramp up the speed 03:49
lemme get my posted onto Github 03:51
04:00 holly_ left
guifa github.com/alabamenhu/DateTimeFmt/...imeFmt.pm6 04:04
elcaro / codesections ^^ my first stab at a mostly NQP strftime. 04:07
04:14 tejr left, tejr joined
moon-child vrurg: in vrurg.github.io/arfb-publication/0...ject-mop/, the way you describe integers as working in raku actually predates c++ by at least a decade, having first appeared in smalltalk and lisp. (And actually raku's 'meta object protocol' is taken from common lisp.) And the way you describe integers as working in c++ comes from simula, which originated in the early 1960s. 04:24
I think it would be better to change the c++ reference to simula (with maybe a reference to c++, since people may not be familiar with simula), and mention the common lisp influence
04:29 Doc_Holliwood joined 04:47 RandalSchwartz left
elcaro guifa: I'll take your lib for a spin when I have time. Looks good. 05:19
05:25 jrjsmrtn joined 05:34 luk joined, luk left 05:35 luk123 joined 05:37 luk123 left 05:40 luk123 joined
luk123 weekly: raku tag on stackoverflow has now reached 500 watchers 05:40
notable6 luk123, Noted! (weekly)
05:40 luk123 left 06:02 reportable6 left 06:03 reportable6 joined 06:06 xinming left 06:17 m6locks left 06:26 ufobat_ joined, Doc_Holliwood left 06:42 abraxxa left, abraxxa joined 06:44 stoned75 joined 06:48 chrysanthematic joined 07:00 Sgeo left 07:07 chrysanthematic left 07:23 miriam_ joined 07:32 tejr left, tejr joined 07:34 xinming joined 07:35 tejr left 07:37 tejr joined 07:40 miriam_ left 08:25 frost joined 08:29 miriam_ joined 08:34 Doc_Holliwood joined 08:37 miriam_ left 09:06 MoC joined 09:15 MoC left 09:24 sono left 09:35 linkable6 left 09:37 linkable6 joined, MoC joined 09:51 abraxxa left 11:05 Doc_Holliwood left 11:12 frost left 11:31 linkable6 left 11:34 linkable6 joined 12:02 reportable6 left 12:03 squashable6 left, reportable6 joined 12:05 squashable6 joined 12:12 Xliff joined 12:30 marekh joined
Altreus When I start a github issue in Raku/vim-raku it says "If it's not related to highlighting or folding" ... 12:33
vim-raku doesn't appear to implement folding at all
at least I can't find anything that will fold
I feel like I shouldn't be opening an issue about implementing folding if someone's already mentioned it in the issue template 12:35
12:48 suman joined 12:57 suman left
vrurg moon-child: that section is not a historical introspection but rather outlines the path language development took. 13:27
13:27 suman joined
suman m: for 1..4 {say $_} 13:29
camelia 1
2
3
4
suman I thought this would also work 13:30
m: for 4..1 {say $_}
camelia ( no output )
[Coke] m: dd 1..4; dd 4..1
camelia 1..4
4..1
lizmat m: for 4 ... 1 { .say }
camelia 4
3
2
1
lizmat .. only goes up, ... also goes down 13:31
suman Hmm I see
13:32 RandalSchwartz joined
[Coke] docs for .. point to docs.raku.org/type/Range which mentions the ordering in the 5th paragraph. 13:32
weird that doc categories show .. as infix, but ... as routine 13:33
[Coke] wonders if the naming of ... was because ".., but moreso" 13:34
any pointers on using irssi to connect via TLS to libera? just changing the port gives an unable to connect, but no details about the actual error 13:39
13:42 Doc_Holliwood joined
moritz you need /connect -tls 13:44
moritz hopes he's not Captain Obvious 13:45
[Coke] no, I think the docs I've found assume you know way more about IRC than I do. :)
s/you know/one knows/
[Coke] gives up and will just connect unsecurely, he guesses. 13:47
13:52 [Coke] left, [Coke] joined
[Coke] (ok, closer with wiki.archlinux.org/title/Irssi, now I'm at least getting an error related to the certs) 13:54
13:56 jess left 13:57 linkable6 left, linkable6 joined 13:58 vrurg left
codesections m: &[...].candidates.say 14:04
camelia (&infix:<...> &infix:<...>)
codesections yeah, that seems like a doc error; ... is an infix 14:05
14:05 Kaiepi left 14:13 marekh left, Kaiepi joined 14:21 vrurg joined 14:33 mareksh joined 14:39 ufobat__ joined 14:42 ufobat_ left
gfldex lolibloggedalittle: gfldex.wordpress.com/2021/06/18/despotting/ 14:53
Altreus o hello 15:00
I see you're using the module I cannot find the time for
You're not wrong, it is fairly spotty :D 15:01
15:01 Sgeo joined 15:02 suman left 15:03 Doc_Holliwood left
Altreus gfldex: Many classes that are typically represented as a Str ... I take from your example you mean in the sense that a Channel is usually represented as its name? 15:03
a user is represented as @user#1234 15:04
etc
[Coke] codesections: there's probabaly already a ticket for mis-categorized things in general, but having a specific one to fix isn't a bad thing.
Altreus gfldex: I don't mind adding methods that return the string you would use to represent the thing in a message 15:05
That might not be a terrible idea
I'm not sure I'd go as far as to make it stringify itself because I find that magic always trips me up at some point 15:06
I know kawaii_ had to construct messages manually to make the bot actually link to channels or highlight people
15:15 mareksh is now known as supersecant
Altreus that could be another thing I do whenever I get around to the dev stream 15:16
15:26 Doc_Holliwood joined 16:16 lizmat left, lizmat joined 16:44 Doc_Holliwood left 17:10 cognominal left 17:26 Doc_Holliwood joined 18:02 reportable6 left 18:03 reportable6 joined 18:30 RandalSchwartz left 18:31 ufobat__ left 18:53 stoned75 left 19:01 b2gills left 19:02 b2gills joined, tejr left 19:03 tejr joined, gfldex left 19:16 chrysanthematic joined 19:30 gfldex joined 19:41 chrysanthematic left 19:56 chrysanthematic joined 20:03 chrysanthematic left, chrysanthematic joined, chrysanthematic left 20:04 chrysanthematic joined 20:07 MoC left 20:36 RandalSchwartz joined 21:13 supersecant left, mareksh joined 21:14 mareksh is now known as supersecant 21:23 gordonfish- joined 21:25 gordonfish left 21:37 antononcube joined
Xliff How can I write a subset with multiple conditions? 21:39
I've tried "our subset NonGLibPositional is Any where { $_ ~~ Positional && $_ ~~ (GLib::Array, GArray).any }" but this errors out with an LTA 21:40
21:41 tejr left
Xliff m: class A {}; class B {}; our subset NonGLibPositional is Any where { $_ ~~ A && $_ ~~ B } 21:42
camelia 5===SORRY!5=== Error while compiling <tmp>
No such method 'add_parent' for invocant of type
'Perl6::Metamodel::SubsetHOW'
at <tmp>:1
Xliff m: class A {}; class B {}; our subset NonGLibPositional is Mu where { $_ ~~ A && $_ ~~ B }
camelia 5===SORRY!5=== Error while compiling <tmp>
No such method 'add_parent' for invocant of type
'Perl6::Metamodel::SubsetHOW'
at <tmp>:1
lucs I've got something like this in my notes: subset Foo of Any where * ~~ Bar | Moo | Meow;
Xliff lucs++ # Let me try that
21:43 tejr joined
Xliff Actually, that only catches the exclusive case. What about the inclusive? 21:43
lucs s/|/&/ ?
Xliff And the block form doesn't take kindly to *
lucs: Two logicals, inclusive AND exclusive.
Your conditional only does the inclusive
Hmmm... maybe two subsets? 21:44
lucs ... where { $_ ~~ A & B } ?
... where { $_ ~~ A & (B | C) } ? 21:46
21:46 antononcube left
Xliff Pisslb.e 21:46
* Possible.. (lol)
lucs :)
Xliff Nope. Using two subsets, as well as lucs' last two suggestions both result in the same error. 21:47
lucs :(
Paging the experts!
guifa isn't it "of Any" not "is Any"? 21:48
m: class A {}; class B {}; our subset NonGLibPositional of Any where { $_ ~~ A && $_ ~~ B }
camelia ( no output )
Xliff guifa++ 21:49
lucs guifa++ Careful reading :)
guifa you can also do
m: class A {}; class B {}; our subset NonGLibPositional of Any where Positional & (A|B)
camelia ( no output )
lucs takes more notes! 21:50
guifa Also, "of Any" is redudant IIRC 21:51
codesections bisect: my token paren { '(\' <tok> \')' }; my token tok { <paren>? foo }; say "(foo)foo" ~~ /<tok>/; 21:59
bisectable6 codesections, Will bisect the whole range automagically because no endpoints were provided, hang tight
codesections, ¦6c (54 commits): «「foo」␤ tok => 「foo」␤» 22:00
codesections, Nothing to bisect!
22:01 Doc_Holliwood left 22:07 sono joined 22:23 chrysanthematic left 22:32 melezhik joined
melezhik . 22:32
releasable:
releasable6 melezhik, I cannot recognize this command. See wiki for some examples: github.com/Raku/whateverable/wiki/Releasable
melezhik releasable6: status
. 22:33
22:37 supersecant left 22:43 chrysanthematic joined 22:44 [Coke] left, [Coke] joined
Geth doc: coke self-assigned Create a helper module for testing github.com/Raku/doc/issues/1751
a29ac07008 | Coke++ | 2 files

Part of #1751
22:58
23:20 chrysanthematic left 23:25 chrysanthematic joined
23:33 linkable6 left 23:34 chrysanthematic left 23:36 linkable6 joined