🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku
Set by ChanServ on 14 October 2019.
00:04 aborazmeh joined, aborazmeh left, aborazmeh joined
Doc_Holliwood Dear diary. Today I learned about the repeated function. Please bless() all the good people developing this wonderful language. Amen. 00:06
00:39 thundergnat left 00:43 lucasb left 00:51 Altai-man_ joined 00:52 vrurg left 00:53 sena_kun left 00:58 vrurg joined 01:01 margeas left 01:09 ensamvarg joined 01:19 mowcat left 01:41 wildtrees left 01:45 thowe joined
thowe Hello 01:45
01:48 MasterDuke left, lichtkind left
jdv79 anyone know of any non-core examples of making something that is awaitable? 02:01
02:01 Doc_Holliwood left 02:07 molaf left
leont has build such a thing, actually 02:18
02:19 molaf joined
leont (but apparently hadn't pushed it to github until now) 02:21
02:22 Xliff joined
leont github.com/Leont/raku-actor/blob/m...or.pm6#L45 02:22
Though I guess that's cheating by essentially delegating the awaitableness to a Promise 02:23
jdv79 hmm, yeah - that's just Promise 02:32
thanks anyway. maybe i'll just "try some stuff":) 02:33
leont Implementing Awaitable::Handle doesn't look to hard 02:44
(famous last words)
02:44 Xliff left 02:52 sena_kun joined 02:54 Altai-man_ left 02:58 xelxebar left 02:59 xelxebar joined 03:04 imcsk8 left, leont left 03:06 imcsk8 joined 03:25 ZzZombo_ joined 03:27 ZzZombo left, ZzZombo_ is now known as ZzZombo 03:35 orinthe left 03:54 holyghost left 03:55 holyghost joined 03:57 orinthe joined 04:05 squashable6 left 04:09 squashable6 joined 04:19 aborazmeh left 04:51 Altai-man_ joined 04:53 sena_kun left 05:29 sauvin joined 05:52 molaf left 05:54 Doc_Holliwood joined 06:22 stoned75 joined 06:52 sena_kun joined 06:54 Altai-man_ left 06:56 thowe left
stoned75 hello 06:56
07:11 Doc_Holliwood left 07:15 reach_satori left
moritz hi stoned75 07:25
07:26 stoned75 left 07:27 stoned75 joined 07:28 Sgeo_ joined, ensamvarg left 07:30 Sgeo left 07:34 finanalyst_mobil joined 07:38 finanalyst left 07:52 stoned75 left, finanalyst_mobil left 07:53 finanalyst joined, finanalyst left 08:04 vike left 08:07 dakkar joined, AndyMcD joined
AndyMcD Hello, sirs and madams. 08:07
i have been reading the raku site for information and came across this 08:08
docs.raku.org/language/ --> 403 Forbidden
08:08 sno left
AndyMcD figured to put it here and let someone know. if there is a better way to report it, please let me know and i will do so 08:08
cheers
rba AndyMcD: On which page was the dead link? 08:10
AndyMcD docs.raku.org/language/faq#I'm_a_P..._and_Raku? 08:11
then click the link " Language section of the documentation"
rba AndyMcD: btw this is the place to report issues. Do you like to open one or should I? 08:12
AndyMcD if its okay with you, could you do it please? i just started my work day, so i have stuff to get on with. 08:13
apologies for the laziness
rba AndyMcD: Only if you promise me to improve your raku skills today :-) 08:19
08:20 wamba joined 08:24 reach_satori joined
AndyMcD haha :) definitely working on it :) 08:25
08:26 AndyMcD left 08:46 sno joined 08:51 Altai-man_ joined 08:54 sena_kun left 09:01 wamba left 09:02 natrys joined 09:05 wamba joined 09:13 Black_Ribbon left 09:15 vike joined 09:18 reach_satori_ joined, reach_satori left 09:25 vike left 09:31 ufobat joined
lizmat clickbaits rakudoweekly.blog/2020/03/09/2020-...he-videos/ 09:32
09:38 finanalyst joined
[ptc] already took the bait 09:40
tellable6 2015-04-11T14:48:17Z #perl6 <raiph> ptc: www.reddit.com/r/perl6/comments/326...rg/cq8q0yq
2015-04-16T14:44:15Z #perl6 <[TuxCM]> ptc: github.com/travis-ci/travis-ci/issues/2978#
[ptc] lizmat++
lizmat /o [ptc] long time, no see online :-) 09:41
09:43 pecastro joined
[ptc] o/ heh :-) Managed to get back online at G[P&R]W2020. 09:44
moritz lizmat++ 09:45
09:46 abraxxa left, abraxxa joined
lizmat hopes [ptc] will be able to exercise their Raku muscles again 09:47
[ptc] hopes so too! 09:49
I already have ideas from the workshop. Just need some peace and quiet to start implementing them :-)
lizmat orders [ptc] some peace and quiet 09:50
moritz flips a round tuit to [ptc] 09:51
09:52 finanalyst left, tejr left, reach_satori_ left, tejr joined 09:53 reach_satori_ joined
[ptc] hehe 10:01
10:03 vike joined 10:04 abraxxa left, abraxxa joined 10:05 wamba left 10:08 reach_satori_ left, reach_satori_ joined, wamba joined 10:27 finanalyst joined 10:28 mowcat joined 10:31 caterfxo left 10:32 caterfxo joined 10:52 margeas joined, sena_kun joined 10:53 Altai-man_ left 11:13 bdju left 11:14 bdju joined 11:20 finanalyst left 11:31 markoong joined, margeas left 11:44 wamba left
rypervenche When writing my own submethod BUILD, should I be binding or assigning the values to my attributes? I have seen both examples in the docs. 11:51
11:54 Sgeo__ joined
lizmat rypervenche: do you expect to change the values after they've been BUILD ? 11:57
11:57 Sgeo_ left
lizmat if not, then you could use binding 11:57
of you are going to change them, the easiest would be to assign
binding would save you one scalar container from being allocated 11:58
depending on how many times you create an object of such a class, that could be an optimization opportunity
jnthn The huge opportunity for binding is when you have an array or hash 11:59
Especially if it's a big one 12:00
lizmat jnthn: well, that actually hasn't been implemented yet, it only binds for scalars atm
jnthn Since assignment into a hash or array is a copying operation (so O(n)) while binding is O(1)
lizmat my first attempt at binding in those cases, produced some weird errors :-(
jnthn lizmat: He was writing his own submethod BUILD, so is fine :)
uh, if "he", shouldn't assume
lizmat they is easier :-) 12:01
jnthn Indeed.
Somehow my brain parsed "ryan" out of the nick...which isn't there at all...wtf brain
I used such binding in the MoarVM heap profiler to avoid copying many-megabyte native int arrays around 12:02
lizmat even if you know the gender, people unconsciously assign value to gender specifications
12:02 wamba joined
jnthn Which saves vast amounts of time and memory :) 12:02
lizmat m: class Point { has $.x = 0; has $.y = 0 }; Point.new for ^1000000; say now - INIT now # rypervenche 12:03
camelia 0.4616124
lizmat m: class Point { has $.x is built(:bind) = 0; has $.y is built(:bind) = 0 }; Point.new for ^1000000; say now - INIT now # using bound attributes
camelia 0.2738341
rypervenche lizmat: Ahh, no I won't be changing them. Good to know. I need to reread the docs on binding and starting using it in my code where allowed/necessary. 12:16
jnthn: Haha, it's all good. "they" is easier so you don't have to remember. ryper is actually a sort of French slang/pig latin of my name Perry. A fellow beardy guy. 12:19
12:19 llnu joined 12:30 leont joined 12:38 xelxebar left 12:41 xelxebar joined 12:44 lucasb joined 12:51 Altai-man_ joined 12:52 reach_satori_ left 12:54 sena_kun left
SmokeMachine Hi guys! I was trying to use DB::MySQL with no luck… it cant find the dynlib… any advice? 12:55
12:55 cpan-raku left 12:56 cpan-raku joined, cpan-raku left, cpan-raku joined 13:06 Doc_Holliwood joined
El_Che SmokeMachine: install the mysqlclient-dev package or something similarly named? 13:07
rypervenche Is DBIish recommended for databases?
SmokeMachine I tried… (i forgod to mention I was tring to install it on macos)
rypervenche: I recumbent Red… :) 13:08
rypervenche Touché :P
El_Che SmokeMachine: with brew?
SmokeMachine Yes, with brew and from msql site… with no luck... 13:09
El_Che SmokeMachine: when I am on mac, I tend to work with containers 13:13
in order to walk around the mac pain for packages 13:14
13:14 wamba left
SmokeMachine El_Che: I’ll try that when I get back home... 13:14
El_Che SmokeMachine: I meant docker for mac 13:15
tried podman (what I use on Linux), but it was just a docker proxy
docker desktop for mac
SmokeMachine Yes, I know… the mysql server was running on a container… I’ll try to test my code inside a container also... 13:16
El_Che ah, ok 13:17
just checking :)
13:18 wamba joined
El_Che SmokeMachine: tried stuff like export DYLD_LIBRARY_PATH="..." ? 13:18
SmokeMachine yes... 13:19
El_Che GMFA
(Great Minds Fail alike ;) )
rypervenche I was thinking much worse words... 13:20
SmokeMachine and that was happening with both DBIish and DB::MySQL... 13:21
El_Che rypervenche: that's why you can't have nice things
13:22 mowcat left
rypervenche That explains a lot :( 13:24
El_Che :) 13:26
rypervenche Question, I'd like to add a type constraint to a subroutine of an array of objects. I tried doing Classname:D @array, but I get an error: Type check failed in binding to parameter '@array'; expected Positional[Classname] but got Array ($[Classname.new(...)
Is it possible to do what I'm looking for? Or do people not usually put type constraints on arrays? 13:27
13:28 aborazmeh joined, aborazmeh left, aborazmeh joined
El_Che rypervenche: I type arrays, but nothing fancy 13:32
13:33 reach_satori joined
jnthn rypervenche: The array that you pass in also has to have a matching type 13:36
e.g. be declared with that type
13:38 wamba left
SmokeMachine m: sub bla(Int @a) {}; bla Array[Int].new: 1,2,3,4; bla 1,2,3,4 13:41
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling bla(Int, Int, Int, Int) will never work with declared signature (Int @a)
at <tmp>:1
------> 3t @a) {}; bla Array[Int].new: 1,2,3,4; 7⏏5bla 1,2,3,4
SmokeMachine m: sub bla(Int @a) {}; bla Array[Int].new: 1,2,3,4; bla [1,2,3,4]
camelia Type check failed in binding to parameter '@a'; expected Positional[Int] but got Array ($[1, 2, 3, 4])
in sub bla at <tmp> line 1
in block <unit> at <tmp> line 1
SmokeMachine m: sub bla(Int @a) {}; bla Array[Int].new: 1,2,3,4; # bla [1,2,3,4] 13:42
camelia ( no output )
rypervenche jnthn: Ahhh, that did it. Thank you.
I've been wondering how to do that for a while. knowledge++
I have to say, even though Python is seen as one of the easiest programming languages to learn, I had trouble understanding OOP and classes and methods (too many parentheses and "self"). I'm rather surprised and happy that I've picked it up as easily as I have in Raku. The syntax is much easier to understand and OOP finally makes sense to me. 13:44
13:45 Doc_Holliwood left, caterfxo left 13:48 caterfxo joined
moritz rypervenche: that's great to hear, thanks! 13:53
14:19 aborazmeh left 14:31 finanalyst joined 14:41 nightfrog left 14:52 sena_kun joined, rindolf joined 14:54 Altai-man_ left 14:58 domidumont joined 15:00 reach_satori left 15:04 leont left 15:15 Actualeyes left 15:18 Actualeyes joined 15:46 libertas left 16:02 molaf joined
masak in my humble opinion, OOP never really truly "makes sense" :P 16:05
Grinnz the actor model is a good abstraction for it IMO 16:06
it's a thing, that can hold stuff, and do stuff
moritz IMHO there are problems that fit so well into our OO models that I feel it "makes sense" 16:07
and then there are things don't fit at all with our OO modeling techniques 16:08
Grinnz OO certainly has been misused or overused across the years 16:09
lizmat if you have a system in which not everything is an object to begin with, I'd agree :-)
16:12 Doc_Holliwood joined
tadzik I think that part of the misuse and misunderstanding of OO stems from the focus on the syntax in the first place 16:19
people then go "great, I learned classes, that was the next step after variables and functions" and then spam them everywhere because why level up if you don't exercise yuor skills after that 16:20
Grinnz i blame java :)
tadzik I blame C++, perhaps because I learned it first :P
ironically, one of the things that helped me *understand* OO was C, Gtk+ specifically 16:21
it has objects, but it doesn't have classes. You pass structs around, but you never look inside them, and afair the documentation doesn't even tell you what's inside them. You accept that they're opaque and that's iet 16:22
16:29 aborazmeh joined, aborazmeh left, aborazmeh joined 16:36 libertas joined
jdv79 it gets worse when someone learns any "patterns". all of the sudden everything is poorly poured into a "pattern". 16:41
16:45 molaf left
Altreus lizmat: did you have a chance to ponder on my suggestions for ObjectCache? 16:47
16:51 Altai-man_ joined 16:54 sena_kun left 16:57 entonian left, entonian joined 16:59 entonian left 17:00 abraxxa left 17:22 Kaiepi left
kawaii Does Raku compile/work on the Windows Subsystem for Linux? 17:25
I find myself booting into my Windows partition of my laptop more in the evening, would be nice to be able to work too. 17:26
17:26 vike left
Altreus ssh 17:27
17:28 vike joined 17:41 dakkar left 17:42 finanalyst_mobil joined, domidumont left 17:45 aluaces left, finanalyst left 17:46 finanalyst_mobil left 17:47 finanalyst joined 17:52 Ven`` joined
synthmeat is there a way to have lazy reduce? i.e. `[&&] ^1e1000`? 17:57
18:00 sno left 18:01 pecastro left
lizmat Altreus: I'm afraid I missed any ObjectCache suggestions :-( 18:02
18:06 wamba joined 18:10 m_athias left 18:12 aluaces joined, ptrcmd left
Doc_Holliwood kawaii: it does. runs fine 18:13
18:14 ptrcmd joined
Doc_Holliwood synthmeat: I think not. Every reduction needs to culminate in a single value and that by definition cannot be lazy 18:14
18:17 MasterDuke joined
jnthn If you want all the intermediate values, you can do the triangle reduce ([\&&] instead), which is probably lazy 18:25
18:25 sauvin left 18:33 m_athias joined
synthmeat ok, so `[&&] 0..100000` takes a bit, but `[&&] (0..100000).reverse` is basically instant, which is all good. i imagined reduce as `0 && 1 && ... && n)`, but instead it's `(...(0 && 1) && ... && n)`, so that makes sense. right? 18:39
meaning, evaluation of reduce starts from the outermost, which is 100000 in this case? 18:41
moritz m: say &infix:<&&>.assoc 18:43
camelia No such method 'assoc' for invocant of type 'Sub+{Precedence}'
in block <unit> at <tmp> line 1
18:45 aborazmeh left 18:52 ufobat_ joined, sena_kun joined 18:53 Altai-man_ left 18:56 ufobat left 18:57 wamba left, wamba joined 18:59 Doc_Holliwood left 19:05 rindolf left 19:08 pecastro joined 19:12 rindolf joined 19:22 aborazmeh joined, aborazmeh left, aborazmeh joined 19:23 Black_Ribbon joined
synthmeat i don't know. my expectation was for `[&&] 0..100000` to finish fast, and `[&&] (0..100000).reverse` to take a bit. && is left to right, right? 19:26
lizmat synthmeat: (0..N).reverse is I believe statically optimized to N..0 19:29
so shouldn't really have a difference in performance 19:30
19:30 wildtrees joined
lizmat but quite possibly I'm out of date or wrong in that respect 19:30
19:30 Doc_Holliwood joined 19:31 wildtrees left, wildtrees joined
synthmeat no, i mean `0 && 1 && ... && n` will finish fast at `0 &&` already. `n && ... && 1 && 0` has to go through all the way, and that's why it's taking longer. but it appears to work in opposite manner (in repl, anyways) 19:35
(unrelated, any convenient method to time the execution in repl?)
but `[*] 0..100000` is faster than `[*] (0..100000).reverse`, which aligns with my intuition 19:43
i'm not understanding something here badly ^_^
lizmat synthmeat: I don't use the REPL, I use an alias: alias r='time raku -e' 19:44
19:44 pilne joined
lizmat it allows me to run code like: r 'say 42' 19:44
and get timing info at the same time
19:44 sno joined 19:45 [Coke] joined, [Coke] left, [Coke] joined
[Coke] wonders how long his irssi executable has been missing while he was running it. oops 19:47
synthmeat lizmat: and what does `r '[*] 0..100000'` do for you? error over here, something about sink context 19:49
lizmat the r should be outside of the quotes 19:50
[Coke] coming in late, but you have to do something with the result, e.g. "say" it.
lizmat and NOT in the REOLK
*REPL
[Coke] defers to liz
synthmeat no, `` are conversational quotes here, as i use them 19:51
[Coke] just watched www.video.uni-erlangen.de/clip/id/12901, good to see some people again.
lizmat what [Coke] said :-)
El_Che lizmat: funny to watch you type and waching your presentation at the same time :)
[Coke] m: 3
camelia WARNINGS for <tmp>:
Useless use of constant integer 3 in sink context (line 1)
[Coke] ^^ same error.
synthmeat k
[Coke] basically, if you go to the trouble to do something, and then ignore it, the compiler assumes that's a bug. 19:52
er, not a bug, per se, but something to worry about. :)
synthmeat ok, so `[&&] (0..1000000).reverse` is 10 times slower than `[&&] 0..1000000` 19:53
s/slower/faster 19:54
lizmat is seeing the same 19:55
synthmeat but `[*] 0..1000000` is many magnitudes faster than `[*] (0..1000000).reverse`
lizmat interesting... 19:56
synthmeat and both * and && are left to right and expected to "fail fast" (so i don't abuse "lazy" term)
[Coke] [*] has a range optimization.
m: (0..10000000).^name.say
camelia Range
[Coke] m: (0..10000000.reverse).^name.say 19:57
camelia Seq objects are not valid endpoints for Ranges
in block <unit> at <tmp> line 1
[Coke] m: (0..10000000).reverse.^name.say
camelia Seq
[Coke] ^^ with a Seq, you have to go through the whole thing. with a range, you can cheat (and we do)
(now watch, we're not cheating and I'm remembering something from parrot) 19:59
Doc_Holliwood A company next village is offering a PHP position. Tempting benefits and easy too reach, but frankly, I'd rather jump into an ant pit with my gut sliced open. 20:00
lizmat mental health insurance included ? 20:01
Doc_Holliwood Maybe I should write them anyway, see if they have heard of this promising new language ...
20:01 wamba left 20:02 wamba joined
synthmeat [Coke]: ok, when i convert them both to lists, perf seems exactly the same. that jives (kinda. i'm assuming there's a reason it doesn't stop at first item and just say `0`) 20:04
[Coke] that would be a better cheat! 20:06
20:07 domidumont joined
[Coke] (but would probably slow down the general case if we had to add a compare to each element) 20:07
20:09 domidumont left
rypervenche Nice. I converted my password manager script from Bash to Raku: gist.github.com/rypervenche/234611...ed1788d61f 20:12
20:13 wamba left 20:14 mensvaga left
lizmat rypervenche: if you add "is built(:bind)" to each attribute definition, you can drop the BUILD method completely 20:15
rypervenche Oooh
Before or after the "is required" or does it not matter? 20:16
MasterDuke gist.github.com/rypervenche/234611...ku-L80-L83 could probably be `return @input.first(*.site eq $chosen-entry-name)` if you wanted 20:17
rypervenche Oooh, also a nice shortcut. Thanks.
MasterDuke why are you doing `.lines.join("\n")` here gist.github.com/rypervenche/234611...ku-L88-L92 ? 20:19
rypervenche That....is a good question.... Let me try it without and see what it gets me, but it should be the exact same thing without it... 20:21
Yep, I don't know what I was thinking there. Removed it. 20:23
And cool, looks like order of the "is" parts doesn't matter. 20:24
20:24 Ven`` left
MasterDuke fwiw, i'm not 100% sure if `.lines.join("\n")` will treat windows/mac/*nix newlines all the same as just doing nothing. may depend on what you pass it to whether it matters (if it's not the same) 20:25
rypervenche That's true. I only use Linux and am only writing this for myself, (at last for now). These are also little projects for myself to learn more of the language. 20:26
So thank you very much for the feedback.
MasterDuke np
rypervenche This is really the only place I can chat about Raku. :P 20:27
20:31 natrys left, wamba joined
synthmeat you can always talk to yourself though 20:32
rypervenche >< 20:36
20:40 natrys joined 20:43 molaf joined 20:44 stoned75 joined 20:47 MasterDuke left 20:51 Altai-man_ joined 20:52 MasterDuke joined 20:54 sena_kun left 20:58 wamba left 21:13 sena_kun joined 21:15 Altai-man_ left, Kaiepi joined 21:17 Kaiepi left, Kaiepi joined 21:37 aborazmeh left 21:40 wamba joined 22:11 natrys left 22:13 rindolf left 22:29 regreg left, regreg joined 22:38 Kaeipi joined, Kaeipi left, Kaiepi left 22:42 wamba left, mowcat joined 22:48 wamba joined 23:03 mowcat left 23:07 shadowpaste left 23:09 vrurg left, vrurg joined 23:12 shadowpaste joined 23:13 Altai-man_ joined 23:15 sena_kun left 23:16 a3f left 23:20 a3f joined 23:21 shadowpaste left 23:28 pecastro left 23:35 aborazmeh joined, aborazmeh left, aborazmeh joined 23:37 SQuoll left 23:56 SQuoll joined