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:04 Manifest0 left 02:27 jgaz left 04:04 deoac joined 05:05 sivoais left 05:14 sivoais joined 05:34 teatime joined 08:22 Manifest0 joined
rcmlz Thanks for your thoughts, I now understand that @array.&my-function is much easier than attaching my-function via role - especially when doing recursive algorithms - onto the object directly. My original code (which I put on rosetta - because parallel implementation was mentioned but never shown) looks like: #| Recursive, parallel-batch-tuned, single-pass, quicksort implementation sub quicksort-parallel(@a, 09:12
$batch) { return @a if @a.elems < 2; # separate unsorted input into Order Less, Same and More compared to a random $pivot my $pivot = @a.pick; my %prt{Order} is default([]) = @a.classify( * cmp $pivot ); # decide if we sort the Less partition on a new thread my $less = %prt{Less}.elems >= $batch ?? start { samewith(%prt{Less}, $batch) } !! samewith(%prt{Less},
$batch); # meanwhile use current thread for sorting the More partition my $more = samewith(%prt{More}, $batch); # if we went parallel, we need to await the result await $less andthen $less = $less.result if $less ~~ Promise; # concat all sorted partitions into a list and return |$less, |%prt{Same}, |$more; } my @test = 1,2,4,6,3; say @test.&quicksort-parallel(2**16);
Using a named parameter in my Role-attaching-attempts was just a trial and error, nothing realy needed. 09:14
Having said that, I now realize that using a named parameter is better - as it serves as documentation. 09:15
The same code using samewith instead of quicksort-parallel works also when refactoring return @a if @a.elems < 2; into a multi. However, using samewith refactors out the actual function name - and I will try if it helps pupils to understand Recursion initially better. 09:22
ab5tract_ rcmlz++ 09:40
11:39 teatwo joined 11:41 teatime left 14:24 lucs left, lucs joined 15:36 Util left 15:38 Util joined 16:00 guifa left 16:01 guifa joined 16:49 deoac left 17:05 deoac joined 17:08 deoac left 17:35 teatwo left 17:39 teatime joined 23:38 teatime left 23:39 teatwo joined