Raku Conference Day 1 on Youtube: www.youtube.com/watch?v=VoxWnNJ0gTI 🦋 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 13 August 2022.
00:05 gcd left 00:07 reportable6 left 00:08 reportable6 joined 00:34 vrurg left 00:35 vrurg joined 00:39 irc_user joined 01:30 nine left, m_athias left, nine joined 01:31 m_athias joined
japhb Sorry I couldn't be at the conference today to answer questions for my talk folks (Retro Cool Raku) -- family obligations and such. If anyone has any questions, feel free to mention me here or send me an email (see the first slide of my talk for that). 02:04
02:31 evalable6 left, linkable6 left, evalable6 joined 02:34 linkable6 joined 02:56 nort left 02:58 swaggboi left 03:09 irc_user left 03:19 deoac left 03:37 atweiden-air_ joined
atweiden-air_ r: my role A {*}; my role B {*}; my class X { method new() { self.bless but (A,B) } }; multi sub ab(X+{A,B} $ --> 'x+ab') {*}; ab(X.new) 03:40
camelia Can't open perl script "/home/camelia/rakudo-j-inst/bin/eval-client.pl": No such file or directory
===SORRY!===
Slurpy positional parameters with type constraints are not supported
at <tmp>:1
------> elf.bless but (A,B) } }; multi sub ab(X+⏏{A,B} $ --> 'x+ab') {*}; ab(X.new)
Missing block
at <tmp>:1
------> elf.bless bu…
atweiden-air_ ^ 03:41
is it possible to multi dispatch against the role mixins?
or would it take multiple subs, e.g. sub xab(X $ where a($_) && b($_) --> True) {*} 03:42
m: my role A { has $.a is required }; my role B { has $.b is required }; my class X { multi method new(:a($)!, :b($)!) { self.bless(:a(1), :b(2)) but (A,B) }; multi method new(:a($)!, :b($)) { self.bless(:a(1)) but A }; multi method new(:b($)!, :a($)) { self.bless(:b(2)) but B }; multi method new(:a($), :b($)) { self.bless } }; X.new(:a).say; 04:09
camelia Died with X::Attribute::Required
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
atweiden-air_ and how do you handle passing required attributes to an ad-hoc mixed in role? 04:10
04:12 nort joined
atweiden-air_ m: my role A { has $.a is required }; my role B { has $.b is required }; my class X { multi method new(:a($)!, :b($)!) { self.bless(:a(1), :b(2)) but (A,B) }; multi method new(:a($)!, :b($)) { self.bless(:a(1)) but A }; multi method new(:b($)!, :a($)) { self.bless(:b(2)) but B }; multi method new(:a($), :b($)) { self.bless } }; X.new.say; 04:13
X.new(:a).say;
camelia X.new
atweiden-air_ m: my role A { has $.a is rw }; my role B { has $.b is rw }; my class X { multi method new(:a($)!, :b($)!) { my $x = self.bless but (A,B); $x.a = 1; $x.b = 2; $x }; multi method new(:a($)!, :b($)) { my $x = self.bless but A; $x.a = 1; $x }; multi method new(:b($)!, :a($)) { my $x = self.bless but B; $x.b = 2; $x }; multi method new(:a($), :b($)) { 04:22
self.bless } }; X.new.say; X.new(:a).say; X.new(:b).say; X.new(:a, :b).say;
camelia ===SORRY!=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> ; $x }; multi method new(:a($), :b($)) {⏏<EOL>
atweiden-air_ m: my role A { has $.a is rw }; my role B { has $.b is rw }; my class X { multi method new(:a($)!, :b($)!) { my $x = self.bless but (A,B); $x.a = 1; $x.b = 2; $x }; multi method new(:a($)!, :b($)) { my $x = self.bless but A; $x.a = 1; $x }; multi method new(:b($)!, :a($)) { my $x = self.bless but B; $x.b = 2; $x }; multi method new(:a($), :b($)) { 04:24
camelia ===SORRY!=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> ; $x }; multi method new(:a($), :b($)) {⏏<EOL>
atweiden-air_ self.bless } }; X.new.say; X.new(:a).say; X.new(:b).say; X.new(:a, :b).say;
“works on my machine”. maybe text is too long. 04:25
fixed by using `is rw`, there. but that isn’t ideal
CIAvash maybe `my \newself = self.^mixin: A; newself.bless: :a(1)`? 04:47
04:47 abraxxa-home joined
CIAvash or `self.bless but A[1]` and A being `my role A[$a] { has $.a = $a };` 04:49
04:51 abraxxa-home left 04:52 abraxxa-home joined
atweiden-air_ CIAvash: niiiiice 04:59
05:21 abraxxa-home left
atweiden-air_ m: so "Raku: a brain refreshment. “Truly better than electrolytes for one’s intellect — Abraham Lincoln”. “Even more important than water or indeed life itself, is Raku — Nobel prize winning surgeon, Emil Theodor Kocher”" 05:22
camelia WARNINGS for <tmp>:
Useless use of "so " in expression "so \"Raku: a brain refreshment. “Truly better than electrolytes for one’s intellect — Abraham Lincoln”. “Even more important than water or indeed life itself, is Raku — Nobel prize …
05:23 atweiden-air_ left 05:40 p6steve left 05:42 p6steve joined 06:05 reportable6 left 06:08 reportable6 joined 06:13 Sgeo joined 06:42 kjp left 06:47 kjp joined
Nemokosch SmokeMachine: how does ^all work? 🙂 07:31
SmokeMachine Nemokosch: ^all returns a ResultSeq 07:38
tellable6 SmokeMachine, I'll pass your message to Nemokosch
Nemokosch what is a ResultSeq? 07:39
SmokeMachine It is a Sequence that stores everything needed to generate SQL and generates it and run it when iterated over 07:43
And it has many methods (like map and grep) that returns new ResultSeqs
fco.github.io/Red/api/Red/ResultSeq.html 07:45
Nemokosch: 👆 07:46
tellable6 SmokeMachine, I'll pass your message to Nemokosch
07:47 linkable6 left, evalable6 left, linkable6 joined
SmokeMachine It does Sequence and does Positional 07:47
07:48 evalable6 joined
SmokeMachine Nemokosch: got it? 07:52
tellable6 SmokeMachine, I'll pass your message to Nemokosch
Nemokosch uh oh... moment 🙂 08:08
08:15 sena_kun joined 08:21 Nemokosch joined
Nemokosch . 08:22
tellable6 2022-08-14T07:38:25Z #raku <SmokeMachine> Nemokosch: ^all returns a ResultSeq
2022-08-14T07:46:16Z #raku <SmokeMachine> Nemokosch: 👆
2022-08-14T07:52:26Z #raku <SmokeMachine> Nemokosch: got it?
Nemokosch 👻
08:22 Nemokosch left
SmokeMachine :) 08:23
Nemokosch it would be funny to make a Raku Hall of Fame, I mentioned that yesterday as well. At least half of yesterday's speakers would be there 😄 09:02
From Liz to Vadim straight, basically
And I'd like to think that there will be eventually space for all the others as well, it's just a matter of time and dedication 09:04
SmokeMachine Nemokosch: did you understand ResultSeq? (Sorry, I’m checking it in long intervals… I’m at the coliseum today… :) 09:05
tellable6 SmokeMachine, I'll pass your message to Nemokosch
Nemokosch I think so. So this inherits from Seq? 09:12
SmokeMachine It does Sequence and Positional 09:16
And it has a .Seq method that returns a Seq 09:17
docs.raku.org/type/Sequence 09:20
09:22 linkable6 left, evalable6 left
Nemokosch gotcha 09:22
09:23 evalable6 joined
SmokeMachine github.com/FCO/Red/blob/master/lib...ultSeq.pm6 09:24
09:24 linkable6 joined 09:30 Sgeo left
SmokeMachine Nemokosch: you can try playing with ResultSeqs if you want… `use Red; model Bla { has $!id is serial; has Int $.value }; red-defaults “SQLite”; my $*RED-DEBUG = True; Bla.^create: :value(^100 .pick) xx 10; .say for Bla.^all.grep(*.id < 30).map: *.value` something like this will use in memory SQLite and print the generated SQL… 09:35
tellable6 SmokeMachine, I'll pass your message to Nemokosch
Voldenet I really like 30 lines of `use` in that file, makes me wish that `use Red::Ast::<Next Case Empty Value …>` was possible 09:36
Nemokosch I think it will take time until I start using a database from Raku 09:39
Simply because it doesn't really fall into my domain. Right now I'm only using database 1. from crazyass C-generated code for work 2. with node.js for hobby, there I use Sequelize and Umzug
with a tiny sqlite database
SmokeMachine Voldenet: I think that would be cool 09:40
Nemokosch: that’s a good way for understanding ResultSeq 09:41
tellable6 SmokeMachine, I'll pass your message to Nemokosch
Voldenet sounds like "if I had rakuast" case, but I'm not sure if such macros can be made 09:50
leont Voldenet: funny you mention that (30 lines), that's one of the things on my list that annoy me 09:52
SmokeMachine Voldenet: I’m planning using custom passes for that 09:54
Even if I have to add a new ast attribute on Block and populate it for each block passed for each map, grep, first, etc… 09:56
leont 3 more hours, and my head is still fried. Might have to cancel. And beginning to worry it's not the heat but covid or something :-s. 09:58
lizmat leont: actually, 5 hours
15:00 UTC
which is 17:00 local
Voldenet though the newest C# solves `the great totem of usings` differently – it just uses file with shared usings per project 09:59
leont Right. That helps a little.
Nemokosch I still don't know if I like "partial classes" for example, now that you mentioned C# 10:00
Voldenet partial classes are a solution to the problem, where half of the code is generated and half is maintained 10:01
Nemokosch I mean, it's better than nothing, but it's mostly a way to hide language constraints and bad class design 10:02
I'm not sure if I like "half of the code is generated and half is maintained" in the first place
😄
Voldenet "good tradeoffs, bad tradeoffs" case :D
Tooling for UI or translations (also third party ones) extensively use that 10:03
but it could've been done on language level with something like `class Translation { include Resx.Create("1033.resx") }` 10:06
IMO it actually makes tools easier 10:08
because it's relatively simple to just generate code files, dealing with metamodel requires knowing metamodel otoh 10:09
Nemokosch Anyway, I'm looking forward to seeing what RakuAST has for us 10:18
Because there might be other ways with this very much language-aware design
Voldenet also amazing, because you no longer will have to sacrifice performance for readability or other way around 10:30
10:30 evalable6 left, linkable6 left
Voldenet since you can just transform simple code into performant one 10:31
10:31 linkable6 joined 10:32 evalable6 joined
SmokeMachine Is there a way to get yesterday’s zoom chat? 11:13
11:27 sena_kun left 11:28 sena_kun joined
Nemokosch if someone saved it explicitly 11:28
11:54 perlbot left 11:55 simcop2387 left 11:56 perlbot joined 12:00 simcop2387 joined 12:07 reportable6 left 12:10 reportable6 joined
lizmat didn't 12:27
12:35 sena_kun left 12:38 sena_kun joined 13:21 squashable6 left 13:23 squashable6 joined
sjn Voldenet: The organizer (Andrew) has a copy of the chat since he recorded it through zoom, afaik 13:56
Voldenet I didn't ask, but SmokeMachine did
sjn ah, sorry, 13:57
Voldenet np
sjn SmokeMachine: ^ :-)
SmokeMachine sjn: Oh! I’ll ask him, thanks! 13:58
14:15 pamplemousse joined 14:18 p6steve left, pamplemousse left 14:45 pamplemousse joined 14:50 andm joined 14:52 pamplemousse left
lizmat Raku Conference Day 2 on Youtube: www.youtube.com/watch?v=BL9-XdC9WYI 🦋 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! 14:56
15:08 pamplemousse joined 15:15 deoac joined 15:19 pamplemousse left 15:31 pamplemousse joined 15:34 pamplemousse left 15:42 Kaiepi left 15:49 pamplemousse joined 15:54 MoC joined 15:57 MoC left 16:01 pamplemousse left 16:02 pamplemousse joined 16:04 pamplemousse left 16:06 pamplemousse joined 16:18 pamplemousse left 16:19 pamplemousse joined 16:32 sena_kun left 16:34 sena_kun joined 16:39 Kaiepi joined, pamplemousse left 16:40 pamplemousse joined
jjatria tonyo: raku.land/zef:tony-o/DB::Xoos::MySQL links to github.com/tony-o/p6-db-xoos-mysql but that repo seems to have disappeared? 16:44
leont I did totally mess up the schedule, but I guess more content is a better way to mess it up than with less content 16:45
I did totally mess up the schedule, but I guess more content is a better way to mess it up than with less content 16:46
16:52 pamplemousse left 17:00 andm left 17:09 Colere left
lizmat leont indeed... food for thought :-) 17:09
17:10 Colere joined 17:11 Furor joined, pamplemousse joined 17:14 Colere left 17:21 sena_kun left
lizmat leont: did you make an issue for "is built" not handling capturization correctly? 17:24
leont Not yet 17:25
lizmat imo if an attribute is built, it should be captured
or do you have a situation where you would want to build, but not capture ?
17:26 Furor is now known as Colere
guifa_ leont I really appreciated the talk, I don't think you were being negative at all. Some of them (like pod, which has been very under utilized so far), have a lot of room to be potentially reworked down 17:32
leont That one kind of ties in with the exporter one though, because right now other modules can't affect POD in a direct way, leading one to have to write a bunch of boilerplate that I hope won't be necessary in the future 17:34
E.g. being able to inject a DOC phaser would be super useful 17:35
lizmat use module $=pod 17:37
would allow access to "module" to the pod of a module doing the "use" statement ?
if it's the last statement in a compunit, of course 17:38
17:43 ChanServ sets mode: -o lizmat 17:47 sena_kun joined
gfldex lolibloggedalittle: gfldex.wordpress.com/2022/08/14/symbolism/ 18:07
18:07 reportable6 left 18:09 reportable6 joined 18:12 pamplemousse left 18:13 pamplemousse joined 18:18 pamplemousse left 19:18 linkable6 left, evalable6 left 19:19 evalable6 joined 19:20 linkable6 joined 19:36 Nemokosch joined 19:44 Nemokosch left 19:45 Nemokosch joined, Nemokosch left 20:12 sena_kun left 20:35 discord-raku-bot left, discord-raku-bot joined
SmokeMachine I like it seems by the definition of futurism, it seems Red is futuristic… :) 20:37
20:38 pamplemousse joined 20:40 pamplemousse left
lizmat goes afk for some fresh air 20:58
leont I also think we could use a few more pod variables. E.g. instead of pushing declaration blocks straight to $=pod it would use some &=process-declaration that defaults to the current behavior but can easily be overridden. 21:07
21:09 sena_kun joined
leont But probably, we need to design some coherent stuff before adding features 21:09
21:12 sena_kun left 21:13 justache joined 22:13 linkable6 left, evalable6 left 22:15 linkable6 joined 22:16 evalable6 joined
SmokeMachine leont: I’m watching your talk… the Red’s user doesn’t need to include any of those files… only `use Red` is needed… 22:17
Red does exports everything needed by the user 22:19
leont: it’s done here (github.com/FCO/Red/blob/master/lib/Red.pm6). Red chooses what to export from several different things… 22:21
leont: the tooling you say you’d want to have, is what Red does to the user… 22:22
leont I certainly didn't mean to pick on Red, but I encountered an example of having to include way too much stuff and used it for the presentation. 22:23
SmokeMachine leont: and just for completeness: Red internals are not visible for the user… all the user should know is `use Red:api<2>` 22:24
leont Yeah, that's what saves you 22:25
Anything that needs to expose more internals (e.g. Cro) will suffer from the issue much more
SmokeMachine And I really think the solution on Red.pm6 was a relatively good one for avoiding the user to add many uses… 22:26
(I had that issue to not make the users to have it :) ) 22:27
23:16 evalable6 left, linkable6 left 23:17 linkable6 joined, evalable6 joined 23:27 Sgeo joined
guifa_ One thing I've been trying to do lately (and maybe it's me trying too hard) is to do lexical use statements 23:44
In some cases, that can really help me clear up the laundry list of `use`, while also making it a bit clearer where/why I'm `use`-ing stuff 23:45
23:58 vrurg_ joined, vrurg left