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
|