This channel is intended for people just starting with the Raku Programming Language ( Logs are available at
Set by lizmat on 8 June 2022.
00:03 Kaiepi left 02:09 frost joined 04:16 samebchase joined
Util deoac: According to , "Some things can't be done to our vars". 04:29
I am not clear on why "type constraint" is one of those things, though. 04:30
Could be a necessity of the fundamental language design that I just am not seeing,
or it could just be a limitation of the current implementation (as in "Not Yet Implemented").
Two old issues are mainly about the LTA error: ,
The docs, at , suggest that `our Int $foo` should work:
"our variables work just like my variables, except that they also introduce an alias into the symbol table."
05:35 Kaiepi joined 06:07 deoac left
pelevesque Anyone know if there is a difference under the hood between these two lines. I see know difference over the hood. 06:53
my @seq = 1, 2, 4 ... ∞;
my @seq = 1, 2, 4 ... *;
Anyone know if there is a difference under the hood between these two lines. I see no difference over the hood.
my @seq = 1, 2, 4 ... ∞;
my @seq = 1, 2, 4 ... *;
Nemokosch There is no difference in this case, indeed
pelevesque Thanks. 06:54
Nemokosch * is the so-called whatever star, it depends on the context what it will mean
in a sequence or a range, it will mean Inf
pelevesque Ah, I see... and here it means to whatever which is the same as infinity. 06:55
Makes sense, thanks.
Nemokosch since these sequences are lazy, often it's possible to not think of them as "to infinity" but "to what I demand"
m: (a .. z) Z~ (1, 2, 4 ... *) andthen .say; 06:57
oops, wrong line
m: ('a' .. 'z') Z~ (1, 2, 4 ... *) andthen .say
so yes, it's actually the same as Inf here but it may look nice in a context like this 06:58
pelevesque Ah true - I like that - to what I demand idea. 06:59
Nemokosch do we have something like splice in Javascript? 07:34
oh we do have splice
pelevesque I'm having a problem and not sure how to solve it. 07:57
I have the following code in a module (.rakumod). If I use my module in a raku.main and try test(4) it will fail. I'm realizing it does not like the fact that I use my,
my @powers2 = 1, 2, 4 ... 5.7896045e+76; # 2⁰ → 2²⁵⁵
subset Pow2 of UInt where * ~~ any @powers2;
sub test (Pow2 $n) is export { say $n; }
If I do this, I have no problem:
subset Pow2 of UInt where * ~~ any 1, 2, 4 ... 5.7896045e+76;
sub test (Pow2 $n) is export { say $n; }
I can use our instead, but then @powers2 becomes available in my raku.main
Nemokosch I wonder if you can export anything with internal variables in it 08:04
I'm not a module guru but I have the impression that exporting a function that has variables only accessible in the exporting module, would require some sort of "module-level closure" to work 08:05
Nahita `my constant` instead of `my`? 08:06
Nemokosch but then I'm thinking: if modules are a unit of compilation, that shouldn't be a problem, right?
pelevesque Nahita, I'm going to try.
Nahita makes it compile time thing right
pelevesque Nahita, it worked. 08:08
Nahita oh, glad
idk why it didn't work without it though 08:18
btw, you can do `2 «**« ^256` for @powers2 but maybe you already know that
pelevesque I did not know that. 08:19
Nemokosch _hyper hyper_ 08:20
Nahita hyped here:
it's a good way to say good bye to `.map` in cases i think 08:21
Nemokosch but don't forget that the hyper meta-operator is not lazy 08:22
pelevesque I know nothing... I have everything to learn... so thanks!
Nemokosch I think this is hard to get right at first, even though it can really look clever at times 08:23
pelevesque Raku feels really nice to learn.
and use!
Nemokosch This is a phase 😅 08:24
something to talk about in my presentation at the raku conference 😛
pelevesque Coming from JS, it feels like someone gave me a Samurai sword instead of a butter knife.
Nemokosch And I'd say JS isn't even bad 08:25
pelevesque not bad at all... I love that language too... but Raku makes some things much easier. 08:26
Nemokosch But yes, Raku is still bigger... some argued that it's bigger than C++
pelevesque and the gradual typing is amazing.
Nemokosch The gradual typing will bite you sooner or later
this is not a wish, just experience...
there are still serious issues with it, simply put
khm, khm, trying to pass an array literal as a typed array 08:27
well, typed arrays in general 08:28
that's yucky stuff
still, a lot of things can be done by clever coercions 08:30
the design of Raku leans towards "operator implies type" instead of "operator implies some abstract operation"
if you have the + sign, that will be numeric addition and that's that
pelevesque I'm gonna try to wrap my head around that! 08:31
Are you in asia? Or are you up super late like me?
Nemokosch you can of course overload it but why would you when you can just _invent new operators if need be_
negative, Europe
pelevesque I invented 2 operators for the module I am working on. 08:32
What kind of things are you building with raku?
Nemokosch I'm mainly just scripting around. I don't like shell. 08:33
pelevesque nice 08:34
Nemokosch automation stuff 🤖
my biggest "flex" is that I have used an HTTP client already xD
pelevesque How long have you been a Rakoon? 08:35
Nemokosch roughly a year 08:36
so yes... I thought last time I only watched the conference, this time I will participate
draw the conclusions of this year
trynna give something back, feedback at least 08:37
pelevesque I'm watching a Ruth Halloway talk and she said something inspiring... I quote - "Do it, release the code... let the code out"
Did you come from Perl or straight into Raku? 08:39
Nemokosch I started with Raku
Sometimes I check Perl stuff but I'm not actively using it for anything longer than 5 lines
pelevesque I never did Perl. Coming from JS. I'd probably just get confused if I did Perl after learning a bit of Raku.
My sleeping hours became messed up because of Raku. 08:43
It's hard to stop coding since it's so much fun.
Nemokosch 😂
have you tried the weekly challenge?
pelevesque No. I have specific projects keeping me busy. But, I should at one point. 08:44
I bought some books and learned a lot from those, and have a kind of mentor that is good in Raku who helps me too... and you and Nahita! 08:45
Nemokosch the weekly challenge is usually something that you can solve with < 10 lines of code, often something arithmetics related 08:47
and I agree - the availability and enthusiasm is a strong point of the community
also, something that shouldn't be overlooked: the language itself is developed in a transparent and comprehensible manner 08:50
if you know the essentials of Raku, you have a chance to understand the internals, since it's NQP all around 08:51
and NQP is a subset of Raku
pelevesque Ya, that is super cool actually.
Maybe one day I'll get there and can contribute,
Nemokosch Same 😄 08:52
The tough nut to crack is still performance... 08:53
pelevesque ya - I keep reading that. 08:54
Nemokosch And this is not something to overlook if you need a lot of calculations quickly put together. Of course you could just trust C with the computations and invoke it from a dynamic library but yes, it would be important to catch up to the potential competitors like Python 08:57
pelevesque I looked at Rakudo's commit history, and there only seems to be a few people working on it. 08:58
Nemokosch It's like you can get to know them one by one 08:59
Again, lizmat, vrurg and jhnthn will surely hold presentations on the conference 09:00
Nemokosch what does snip do, exactly? 09:10
lizmat m: use v6.*; dd (^10).snip(* < 5, * < 8) 09:21
camelia ((0, 1, 2, 3, 4), (5, 6, 7), (8, 9)).Seq
lizmat it cuts up an Iterable into lists depending on given condition 09:22
Nemokosch can it be used in a way that only takes some middle part of a sequence? 09:24
lizmat no, but there's a PR for that: 09:29
say (^20).skip(0,5,3); # (5 6 7)
Nemokosch that operates on "indices", though, not predicates 09:32
I know there is toggle but honestly, it's a really cumbersome state machine that often doesn't give the right value around the boundaries because of that
pelevesque When is 6.e due? Is there a release schedule... or it's whenever things are ready? 09:33
Nemokosch ~~is there a release schedule for Perl6~~ 09:35
lizmat 6.e will be released after RakuAST has been merged 09:39
that's about the schedule that we have
Nemokosch How many tests pass for RakuAST? 🙂 09:41
and especially what percentage
lizmat I think it was just below 50% last time I checked
but that's fully passing files 09:42
pelevesque Is there a way to create a symbol in raku. 09:53
I want to write a note name like G#4 without any quotes or anything of possible and when I write that it is the same as if I had written the associated MIDI note number. Possible?
Nemokosch the hash is not a good idea 09:57
lizmat # is a character that is not acceptable in an identifier, so alas, no 09:58
you *could* probably create the symbol, but then you wouldn't be able to use it 09:59
Nemokosch there is the musical sharp sign though
also not allowed in identifiers but could be used as a very tight operator
and that sounds like a meaningful way to go about it imo 10:00
♯ as a tight infix operator that eats musical note enums and octave numbers
but then the same approach wouldn't work for flat 10:01
wait I messed up the terminology 10:02
lizmat I guess you would have to export C D E F G A B as enums
Nemokosch it wouldn't work for the normal key, whatever the name is
.oO( export them all as enums :-)
that could work
Nemokosch that would "work" but it would be pretty weird, right? having G4 as one thing on its own and G♯4 as G and 4 composed 🙂 10:04
lizmat the ♯ infix op could just be a hash lookup really 10:05
Nemokosch but then how to do G4
other idea: flat and sharp as tight postfix, that's semantically more correct 10:06
lizmat would be an enum
Nemokosch and the letters would be functions
lizmat that could work oot
Nemokosch so G 4 would be a function call 😄
and G♯ 4 a different function call 10:07
but then of course you'd need to pay attention to the precedence still
eventually, it will always have to be something compound, apart from G4, B6 stuff 10:08
12:26 Kaiepi left 12:31 frost left 13:41 Kaiepi joined 15:13 Kaiepi left, Kaiepi joined
pelevesque Thanks, you both gave me a lot to think about! 17:00
17:14 MasterDuke left 18:59 Kaipei joined 19:02 Kaiepi left
Is there a default .gitignore recommended for Raku projects? 20:18
I see that it created lib/.precomp/* so I should probably ignore that.
SmokeMachine pelevesque: probably not the best way… but a way… 20:25
Another way: 20:51
pelevesque OMG SmokeMachine... that is gold! 20:57
SmokeMachine I think I prefer the 2nd way… 20:58
pelevesque Me too... I think... Thanks a bunch! 20:59
21:31 Kaiepi joined 21:33 Kaipei left