🦋 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 6 September 2022.
00:00 reportable6 left 00:02 reportable6 joined 00:04 jpn joined 00:09 jpn left, derpydoo joined 01:04 xinming left 01:06 xinming joined 01:52 jpn joined 01:57 jpn left
SmokeMachine Based on lizmat 's post I started playing with the idea of translating map's, grep's and first's blocks to Red::AST at compile-time instead of trying to find out what they are doing at run-time. My first idea is something like this (gist.github.com/FCO/1d9faecbfaaa63...be3d08d8). It would add a named parameter :red-ast on every map/grep/first, methods other than Red's one would just ignore it (methods ignore unknown 02:15
named parameters) and Red's ones would use it instead of the block (if that's defined). Would that make any sense? Does anyone have a better suggestion? Thanks!
02:20 tea3po left 02:21 tea3po joined 02:23 teatwo joined 02:26 tea3po left 03:26 statisfiable6 left, evalable6 left, squashable6 left, unicodable6 left, committable6 left, shareable6 left, nativecallable6 left, releasable6 left, benchable6 left, linkable6 left, greppable6 left, notable6 left, reportable6 left, bloatable6 left, bisectable6 left, quotable6 left, sourceable6 left, coverable6 left, tellable6 left, sourceable6 joined, unicodable6 joined, greppable6 joined, linkable6 joined 03:27 shareable6 joined, releasable6 joined, notable6 joined, tellable6 joined, bisectable6 joined, coverable6 joined, quotable6 joined, benchable6 joined 03:28 reportable6 joined, nativecallable6 joined, squashable6 joined, bloatable6 joined, evalable6 joined, statisfiable6 joined 03:29 committable6 joined
tonyo would that require something like a preprocessor? 03:30
03:40 jpn joined 03:45 jpn left 04:31 jpn joined 04:44 jpn left 05:36 jpn joined 06:00 reportable6 left 06:02 reportable6 joined 06:26 xinming left 06:28 xinming joined 06:46 zara joined
SmokeMachine tonyo: I intend to add that as a custom compiler pass (if/when possible) 07:07
07:10 jpn left 07:18 rcy left 07:20 ab5tract left 07:38 sena_kun joined 08:07 nine left, m_athias left 08:08 nine joined, m_athias joined 08:11 dakkar joined 08:34 jpn joined 08:36 Sgeo left
lizmat SmokeMachine: looks ok to me, although I would probably take out the grep and put that into the for body 08:38
SmokeMachine lizmat: personal preference, or any reason? 08:39
lizmat: any other reason, I mean.
lizmat performance: you'd only have one level of iterators, instead of 2 08:40
and for me also readability
SmokeMachine lizmat: thanks! I’ll do that
lizmat: and is there a way to add a CHECK phaser from a module and/or add a custom compiler pass? 08:41
lizmat I hope to find out this weekend... :-) 08:42
SmokeMachine :)
lizmat adding a CHECK phaser from a module: maybe the EXPORT sub of a module should also have access to the $*CU of the importer 08:43
then it should be possible
SmokeMachine lizmat: Thanks! Please let me know if/when you find it out! (But I suppose you will make a blog post about that… :) ) 08:44
lizmat yes, I will :-)
SmokeMachine About $*CU… that’s odd to use it because it’s a very bad word in Brazilian Portuguese… 08:45
lizmat ok, maybe we need it to be more explicit: $*COMPUNIT 08:46
well, we have a RaboBank in the NL
:-)
SmokeMachine :)
About EXPORT having access to $*CU, would that be a different variable, right? 08:47
lizmat I guess... $*IMPORTER :-) 08:48
SmokeMachine I think that makes completely sense
08:49 ab5tract joined
SmokeMachine In that case we wouldn’t even need a CHECK, right?! Any change could be done inside EXPORT itself. 08:50
lizmat well,,, hhmmm.... the importer could have been precompiled already
SmokeMachine Willl the importer be already completely parsed when doing the import? 08:51
lizmat also a good question... probably not if it is still source 08:52
there's lots of angles we need to think about here :-)
and also I'm not quite awake yet :-) 08:53
SmokeMachine Maybe it should be able to export a phaser?
(Sorry for keep asking…)
lizmat yeah, stuff like that :-) 08:54
09:24 zara left 09:33 abraxxa joined
guifa_ votes for the more explicit $*COMPUNIT 09:57
CU is fairly opaque in meaning, and if someone wants a shorter expression, they can always do $CU := $*COMPUNIT or similar 10:00
SmokeMachine: is cu that strong of a word in BP? In EP it's fairly innocuous
SmokeMachine Yes, I’ve heard that in Portugal that means the same as “bunda” in BP, but in BP that’s not the case… 10:54
guifa_: ^^
11:00 linkable6 left, evalable6 left 11:02 linkable6 joined, evalable6 joined 12:00 reportable6 left 12:01 reportable6 joined 12:38 El_Che_ left 12:39 El_Che joined 13:06 derpydoo left
Nemokosch bunda lol 13:07
13:17 jgaz joined 13:29 derpydoo joined 14:20 tea3po joined 14:23 teatwo left 14:24 tea3po left, tea3po joined 15:04 xinming left 15:06 xinming joined 15:13 Sgeo joined 15:20 bigdata joined
librasteve anyone know unix? I can't get eval "$(/root/.rakubrew/bin/rakubrew init Bash)" in .bashrc to run on login ;-( 15:48
El_Che bash in capitals? 15:49
(no idea of how rakudobrew works)
librasteve i'll try lc
jdv knows unix
librasteve nope lowercase made no difference --- I just get rakubrew: command not found 15:51
doing the eval manually (with Bash) in each session works fine
jdv maybe man bash and search for startup and search path stuff? 15:54
El_Che ls -la /root/.rakubrew/bin/rakubrew
is the binary there? 15:55
librasteve yes --- all runs fine if I manually go eval "$(/root/.rakubrew/bin/rakubrew init Bash)" in each session
just when i echo that to my .bashrc it does'nt get picked up on ligin 15:56
jdv: thanks - I will try to do that ...
16:01 abraxxa left
It is normally run when you start a new login shell (not really desktop session, because you can run a new login shell from the desktop session). As I said, it is run by default, but not if you have created ~/.bash_profile or ~/.bash_login 16:13
oops - I made a .bash-profile!
16:15 squashable6 left 16:17 phogg left, squashable6 joined 16:35 dakkar left 16:59 jpn left 17:14 jpn joined 17:15 jmcgnh left 17:20 jpn left 17:24 jpn joined
gist.github.com/librasteve/f609bd6...baa1db1e3a 17:50
^^^ this works fine on 2022.02 but dies on 2023.04 17:51
I don't think I am doing anything wrong (but then I would say that)
[Coke] MoarVM oops: MVM_str_hash_fetch_nocheck called with a stale hashtable pointer 17:54
lizmat librasteve how does it do on 2023.05 ? 17:55
librasteve just building now
Nemokosch > say [+] dss; hm, why would this line work? 17:56
librasteve ^^^ did you check the links to the docs? 17:57
docs.raku.org/type/Iterable
Nemokosch does it say anything about meta-operators? 17:58
18:00 reportable6 left
librasteve same error 18:01
18:02 reportable6 joined
docs.raku.org/type/List.html#routine_reduce says Returns a single "combined" value from a list of arbitrarily many values, by iteratively applying a routine which knows how to combine two values. 18:03
I then looked at my code and decided that the .iterator method is the one that helps reduce to do the iteration 18:04
18:07 jmcgnh joined
that's the great thing about raku ... everything is based on the same lower level building blocks 18:07
Nemokosch yeah well, if the behavior was better defined, like it was thoroughly tested that code X and more explicit code Y must do the same 18:09
anyway, bisectable time
18:09 NemokoschKiwi joined
librasteve raku behaviours are fully defined by the ROAST test suite 18:10
lizmat librasteve: adding a method Numeric { self.elems } seems to fix the issue ?
NemokoschKiwi bisectable6: old=2022.02 gist.github.com/librasteve/f609bd6...baa1db1e3a 18:11
bisectable6 NemokoschKiwi, Bisecting by exit code (old=2022.02 new=4b69dd5). Old exit code: 0 18:12
Nemokosch this, without the "fully" part 18:13
bisectable6 NemokoschKiwi, bisect log: gist.github.com/b0a4bb1ebf3d5007f9...84366abe27
NemokoschKiwi, (2023-02-16) github.com/rakudo/rakudo/commit/6b...fb68efa146
librasteve OK - will do that, thanks for the advice
suppers ready - must dash! 18:14
NemokoschKiwi I even checked this commit, should have read the message as well...
18:17 NemokoschKiwi left 18:27 codesections left
librasteve oh just have a quick chance to read the commit message - aha! can someone explain the relationship between reduce() and .iterator - eg. (i) none, (ii) reduce sometimes uses iterator (if so when), (iii) reduce always uses iterator so that I can understand and maybe propose a tweak for the docs? 18:30
Nemokosch this is not reduce() and I suspect they don't even call the same code 18:35
as sad as it sounds
hm, they do, in a rather wild way 18:38
18:38 jpn left
github.com/rakudo/rakudo/blob/a1ac...de.pm6#L20 18:38
18:47 jpn joined
I don't know, it's not obvious to me why it's not right 18:48
my guess would be, it revolves somewhere around this "single argument slurpy" +values
yep - if you write a function like perl sub demo(+values) { dd values; } demo(dss); 18:58
you will see that it gives (DataSlice.new(data => Array[Any].new(1, 3, 5, 42, 6, 8)),)
that is: a one-element list with a DataSlice in it
my gut feeling was right: the method you need to overload the most is actually the list method 19:01
if you add method list { @!data.list }
suddenly it will work
19:08 abraxxa-home joined 19:28 derpydoo left 19:36 jpn left 19:52 zxrom joined
Tirifto_ elcaro, wow! I searched for a Curses library on modules.raku.org, but found nothing, so I assumed one just didn’t exist for Raku. 19:58
20:00 arch left
Tirifto_ I’ll give it a try and see if it covers my needs (which are fairly modest, so probably yes). Thanks for the mention! :D 20:00
(Also thanks nine and [Coke] for help. I ended up writing a wrapping class, as that was ultimately sufficient for my needs.) 20:03
By the way, what’s the ideal way of keeping track of the previous element in a for loop? At the moment I just do ‘state $previous’ at the start of the loop, and ‘$previous = $_’ at the end, but I wonder if there are other straightforward ways? Like passing the block two arguments from the list, but only consuming one of them? (So ‘a b c d’ would get you ‘a b’, ‘b c’, ‘c d’.) 20:07
gfldex Tirifto_: you may want to use `.rotor(2 => -1)` 20:09
Tirifto_ gfldex, thank you, that seems to be what I had in mind! 20:16
Seems like to pass two elements as arguments, one can do ‘.rotor(2 => -1).flat’.
20:20 abraxxa-home left 20:21 jpn joined, abraxxa-home joined
librasteve ++ that' sounds good - I am also toying with delegation so will pull all that together tomorrow 20:23
Nemokosch not gonna lie, I don't know how this + works, it's grammar level and affects QAST generation directly 20:26
20:26 jpn left
but this rule of thumb that "sigils work based on .list" works here as well 20:26
That's why Blob and Buf mostly work as an Iterable, even though they aren't - they provide an appropriate .list method 20:27
20:44 abraxxa-home left 20:45 jpn joined 20:46 sena_kun left 20:58 sena_kun joined 21:06 jpn left 21:08 jpn joined 21:12 kst joined 21:13 phogg joined 21:20 phogg left, phogg joined 21:25 sena_kun left 21:29 jpn left 22:29 evalable6 left, linkable6 left 22:30 evalable6 joined 22:32 linkable6 joined 22:42 jpn joined 23:37 arch joined 23:51 jpn left