🦋 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.
00:05 [Coke]_ left 00:07 [Coke] joined 00:15 zacts left 00:17 lichtkind_ left 01:28 ShaneC left 02:52 melezhik joined
melezhik Hi! 02:52
I've started to experiment with Sparky and built simple CI service for Raku modules - sparrowhub.io:2222
no promises to future development, doing it just for fun, at least now 02:53
in comparison with well known services like travis/ado/GH action, it provides test coverage html page
02:54 kj4tip joined
melezhik built by App::RaCoCo 02:54
sparrowhub.io:2222/about is roadmap or current state
I'd appreciate any thoughts what could be useful specifically for Raku modules CI 02:55
if people are interested to test their modules - please let me know or create issues on respected GH project page 02:56
right service watches change on the respected SCM repositories (Config::BINDish only now) and triggers a new build in case any changes 03:00
right -> right now
03:00 melezhik left 03:01 melezhik joined
melezhik build jobs gets run isolated docker containers which removed afterwords, so it's pretty secure 03:02
03:02 melezhik left 04:12 zacts joined 04:28 zacts left 05:14 jmcgnh left 05:21 jmcgnh joined 05:59 eseyman left 06:19 mexen joined 06:23 eseyman joined 06:38 euandreh left 06:56 Sgeo left 07:06 euandreh joined 07:09 dakkar joined 07:16 jjido joined 07:26 Summer left, Summer joined 07:57 jjido left 08:05 Manifest0 left, jjido joined 08:09 Manifest0 joined 08:19 jjido left 08:38 abraxxa joined 09:09 abraxxa left 09:16 abraxxa joined 10:01 sena_kun left 10:02 sena_kun joined 10:57 Altai-man joined 11:12 abraxxa left, abraxxa joined 11:47 razetime joined
sjn is at the German Perl Workshop, and lichtkind's talk about plotting with Raku starts soon (14:50 CET) 12:21
12:45 razetime left
Nemokosch so that's a thing? 😮 12:49
13:00 razetime joined 13:15 xinming left 13:28 xinming joined
p6steve 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 14:03
dang did it gain
naughty fingers
14:04 xinming left 14:05 jgaz joined 14:07 jgaz left 14:08 Sgeo joined 14:11 xinming joined
p6steve I have two similar Classes in sister packages - Dan::Series, Dan::Pandas::Series ... if I make a coercion method Dan::Series { Dan::Series.new(...) } for the latter, then I get "Cannot dispatch to method Series on Dan because it is not inherited or done by Dan::Pandas::Series" 14:37
14:37 rypervenche joined
p6steve question - do I just name it something like method Dan-Series{...} and drop the convention that Coercion methods are named after the target type? 14:38
-or- is there some other convention / idiom?
[Coke] I think in core, all the coercions are simple names, not :: separated, so we avoid this issue 14:41
p6steve Coke: tx! that's what I suspected... 14:46
Coke: tx! that's what I suspected... 14:47
Coke: (that's the first time I have asked a question that raku didn't already have an answer!) 14:48
I propose a new idiom the double dash: Dan--Series ;-) 14:49
[Coke] you can call it whatever you want if you explicitly coerce, but if you're using the coercion syntax, I don't know how you'd make that work with A::B 14:54
p6steve scrub that ... double dash is not permitted
14:55 Altai-man left 15:06 razetime left
p6steve Coke: seriously, the coercion syntax would be quite useful eg. sub( Dan::Series(Dan::Pandas::Series) $se ) {...} to force an uplift to the raku 'native' variant of Series 15:07
[Coke] Docs say "name". let me check something. 15:12
m: class Dan::Series {}; my $a = Dan::Series.new; say $a.^name; 15:13
camelia Dan::Series
[Coke] m: class Dan::Series {}; my $a = Dan::Series.new; say $a.WHAT
camelia (Series)
15:14 razetime joined
[Coke] class Dan::Series {}; class Other { method Dan::Series($x) { dd $x } }; my $meth = "Dan::Series"; Other.new."$meth"("hi there"); 15:16
m: class Dan::Series {}; class Other { method Dan::Series($x) { dd $x } }; my $meth = "Dan::Series"; Other.new."$meth"("hi there");
camelia "hi there"
[Coke] ^^ you can have a method named that, I assume it was the invocation that was giving you trouble.
15:28 vrurg_ joined 15:31 abraxxa left, vrurg left 15:38 dakkar left 15:43 razetime left 16:02 razetime joined
p6steve Coke: good point - the "Cannot dispatch to method Series" part of the error suggests that too (eg. the method name already cut down)... 16:03
m: class Dan::Series {}; class Other { method Dan::Series($x) { dd $x } };class Yetta { method cando( Dan::Series(Other) $y ) { dd $y } }; Yetta.cando( Dan::Series.new ); 16:09
camelia Dan::Series.new
p6steve m: class Dan::Series {}; class Other { method Dan::Series($x) { dd $x } };class Yetta { method cando( Dan::Series(Other) $y ) { dd $y } }; Yetta.cando( Other.new );
camelia Too few positionals passed; expected 2 arguments but got 1
in method Dan::Series at <tmp> line 1
in method cando at <tmp> line 1
in block <unit> at <tmp> line 1
p6steve ^^ I **think** this means that even if you can have :: in a method name, the coercion syntax will not work 16:11
tbrowder howdy 16:26
16:29 p6steve left 16:31 p6steve joined
[Coke] p6steve: might be a way to do it explicitly with the meta object protocol. 16:36
16:36 p6steve left
[Coke] (that is, construct the signature by hand rather than with syntax) 16:36
16:37 p6steve joined 16:38 jjido joined
[Coke] might also be worth opening a ticket to see if someone can get that syntax to work. 16:39
16:42 p6steve left 16:43 p6steve joined
guifa do you get the same issue when you use the vrurg++ COERCE route? 16:43
16:47 p6steve left 16:48 abraxxa joined 16:49 p6steve joined 16:53 She left 16:57 p6steve left 16:58 p6steve joined 17:02 p6steve left 17:03 razetime left 17:04 p6steve joined 17:08 p6steve left 17:10 p6steve joined 17:14 p6steve left 17:15 p6steve joined 17:20 p6steve left 17:21 p6steve joined 17:25 guifa left, p6steve left 17:26 abraxxa left 17:27 p6steve joined 17:31 p6steve left 17:33 p6steve joined 17:37 p6steve left 17:40 jgaz joined 17:47 p6steve joined 17:55 jjido left
Altreus If I wanted to output all the days of the current month with a field next to each one that I can put a number in, how easy is that and what should I use for the interface part? 18:34
on the terminal that is
japhb Altreus, are you wanting to just display it, or make it interactive? 18:37
Altreus interactive
the next part will be writing out the values so I can pre-fill ones I did in the past :D 18:38
japhb Ah. Then for the terminal side you're limited in the available tooling at the moment (which I try to work on in my spare time, as do a couple other people, but ... $life).
Terminal::Print will let you treat the screen as a printable grid.
Altreus I can happily do it by absolute coordinates tbh 18:39
should be fairly easy to figure out the coordinates of calendar things :)
japhb Yeah, in that case, Terminal::Print is probably a starting point. I know there was someone who'd done a little work towards navigable tables, which is also in the vicinity of your use case, but I'm not sure how far along that is. 18:40
Altreus If that's going then I'm into the idea ... first prototype might just be me typing in the values linewise :)
japhb Yeah, the extra methods that Date has in Raku these days help that a lot.
Altreus might have to install new raku then :P 18:41
japhb has actually been working on a time-and-date TUI app using Terminal::Print this week, oddly enough ... but it's not a calendar, so not quite what you're going for. 18:42
19:01 mexen left 19:31 jgaz left
Altreus LEAVE++ 19:33
20:05 sena_kun left 20:06 sena_kun joined
Altreus I've thrown together a prototype that just uses get() instead of doing anything fancy :D 20:09
20:18 guifa joined
Voldenet Actually, drawing a calendar with raku api is difficult 20:27
m: say now.Date.earlier(:2months).first-date-in-month.map({ .week-number, .gist })
camelia ((52 2022-01-01))
Voldenet it has bitten me before 20:29
it's pretty counterintuitive
20:36 zacts joined
japhb Voldenet: You mean the week number that wrapped from the previous year? 20:38
(If so, that's because ISO weeks are defined to always include Thursday, so they bleed across the boundary) 20:39
m: say Date.today.truncate-to('year').week 20:40
camelia No such method 'truncate-to' for invocant of type 'Date'. Did you mean
in block <unit> at <tmp> line 1
japhb m: say Date.today.truncated-to('year').week
camelia (2021 52)
Altreus Drawing a single month was quite easy, though
japhb Voldenet: Note the week-year there
Altreus: yup. :-)
Voldenet Sure, there is logic to it 20:42
japhb Altreus: Little tip I noticed when preparing for internationalization: enum WeekStartDay < Sunday Monday Tuesday Wednesday Thursday Friday Saturday >; my $week-start = Monday; my @headers = @day-names.rotate($week-start);
Turns out weeks are really odd things in some cultures. This one amazed me: en.wikipedia.org/wiki/Pawukon_calendar 20:43
Voldenet I'd probably use some different property names though, like { .iso-week-year .iso-week-number } 20:44
japhb (My tool needs to do tabular reports across the days of a week, but there are at least 4 major international conventions for starting day of the week.)
Voldenet: Sure. Raku uses ISO standards for Date and Time where appropriate, so that's the default for such things where it would otherwise be ambiguous. 20:46
Voldenet otoh .week-number makes no sense without that iso definition
japhb There are some other possible conventions, but yeah, there's a reason we use the ISO def. 20:47
guifa japhb voldenet: I couldn't even hard code stuff for Intl::Format::DateTime. to calculate the week number, I need to know minimum days in a week to be a year start, and the first day of the week in the local system 20:50
so for a first-week-with-thursday, assuming a Sunday-first system, the minimum days would be 3, but on a Monday-first system, it would be 4 20:51
japhb guifa: Yeah. The tool I'm working on uses partial weeks (if necessary) at start and end of each month, kinda the way a calendar would, but has to care about ISO week as well, so ends up doing some funky figuring to use two somewhat incompatible views on the same thing. 20:54
I ended up defining a DateInterval role stubbing the methods I actually needed, and then implementing in several classes for different ways of looking at dates, so the rest of the code can just pass around DateInterval:D and pretend those weird humans aren't so weird after all. 20:55
Voldenet The biggest problem is that dateish objects can't have useful weeks and weekdays without knowing locale 20:57
guifa Voldenet: User::Language :-) 20:58
err, Intl::UserLanguage but I'm transitioning it to User::Language in my next update 20:59
Voldenet User's language is not locale
It's actually pain when applications use locale as language and vice versa 21:00
Locale is the thing that decides where your weekday starts, language decides what's its name 21:03
guifa Voldenet: the two have been overlapped forever
UserLanguage reports the most complete BCP47 tag that it can, including T and U extensions that include information about, e.g., calendar type and weekday starts 21:04
unfortunately, I can only grab so much of it from command lines, and I'll probably have to start using native call soon to probe the OS a bit more 21:05
[Coke] I have worked on a project where available languages included "english", "french canadian", and "german", which bugged me.
21:05 epony left
japhb If it's a language, it would need to be "Canadian French" I would assume? Because "French Canadian" sounds like it refers to a population group, not a language. 21:06
[Coke] It's the codes, not these words.
japhb (And I don't even know what the official designation of that population group would be officially, actually.) 21:07
[Coke] the important part being that one is tied to a country but the others aren't.
(which could make sense, but not in our case.)
japhb Yeah, gotcha.
Voldenet Maybe US English would've be better, but German German is a bit difficult to look at 21:09
[Coke] ^_^
Geth doc: patrickbkr++ created pull request #4046:
Give the more obvious answer to "Where are bin/ scipts installed?"
guifa The way it works in CLDR is that there's a formula for languages 21:20
21:20 discord-raku-bot left
guifa for English, by default it's "Language (Region)" 21:20
21:21 discord-raku-bot joined
guifa but where there are common terms, they get overridden (and that's on a langauge-by-language basis) 21:21
so Canadian French will pull up for English users, but for someone in Japan, it might just do French (Canada) (but written in Japanese)
For Geman, I think, you'd probably get German (Germany), German (Austria), Swiss German 21:23
21:24 zacts left 21:30 melezhik joined
melezhik my cro app reuse db handler to mysql database  across http requests, so I hit this error on and off - DBDish::mysql error - Unsupported Concurrency: Connection used by multiple threads simultaneously 21:31
any thought now can I handle / fix that on cro app side?
Geth Documentable: patrickbkr++ created pull request #158:
Change uses of Doc::TypeGraph to the new name as well
21:38 melezhik left 21:42 guifa left
Voldenet m: my $x = 1; $x but= Stringy; 21:56
camelia ===SORRY!=== Error while compiling <tmp>
Cannot make assignment out of but because structural infix operators are too diffy
at <tmp>:1
------> my $x = 1; $x but=⏏ Stringy;
Voldenet m: my $x = 1; $x = $x but Stringy; 21:57
camelia ( no output )
Voldenet most weird
22:05 zacts joined 22:47 zacts left 23:06 aru left 23:09 aru joined 23:23 discord-raku-bot left, discord-raku-bot joined