🦋 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:18 jpn joined 00:23 jpn left 00:25 jjido left 01:15 jpn joined 01:20 jpn left
ugexe librasteve: i dunno about deprecating it, but I'd say you almost never want to `use lib ...` in a file contained in a distribution. if the code containing `use lib ...` wouldn't otherwise be distributed (i.e. private code) then it can make sense 01:48
01:50 jpn joined
ugexe imagine a `bin/foo` with a `use lib "lib"`. when the distribution containing `bin/foo` is installed and the user executes it, they likely won't be in the directory of that distribution so the `use lib "lib"` is not only pointless (the modules are being provided from the installation), its actually a potential security issue in that a malicious user could create a lib directory somewhere they have 01:54
permissions hoping that a high priv user will run bin/foo from the parent of the malicious lib
01:55 jpn left 02:10 Manifest0 left, sdfgsdfg joined 02:12 antim0d3s left 02:20 hulk joined 02:21 kylese left
ugexe use lib $?FILE.parent.absolute or some such gets around the security issue, but it still would be pointing to a library path that doesnt exist when whatever module/file using that is loaded from an installation repo 02:36
03:01 AlexDaniel left 03:15 hulk left, kylese joined 03:38 jpn joined 03:43 jpn left 04:14 epony left 04:15 epony joined 04:33 jpn joined 04:38 jpn left 04:45 jpn joined 04:50 jpn left 05:46 jpn joined 05:50 jpn left 06:34 teatime joined 06:47 jpn joined 06:51 jpn left 07:11 stnick joined 07:12 stnick left 07:16 derpydoo joined 07:48 jpn joined 07:53 jpn left 08:21 jpn joined 08:33 epony left 08:35 epony joined 09:23 epony left 09:24 epony joined 09:42 sena_kun joined 09:55 jpn left 09:56 jpn joined 10:06 jjido joined 10:35 Manifest0 joined 10:37 epony left, jpn left 11:19 jjido left 11:23 epony joined 11:28 randomname12345 joined 11:30 randomname12345 left 11:38 lizmat_ joined 11:41 jpn joined 11:42 lizmat left, lizmat_ left, lizmat joined 12:00 derpydoo left 12:19 jpn left 12:21 Sgeo left 12:30 xinming left 12:32 xinming joined 12:53 jpn joined 12:58 jpn left 15:23 jpn joined 15:32 jpn left 15:36 jpn joined 15:47 jpn left 16:19 jpn joined 16:26 jpn left 16:35 rjhb joined 16:36 rjhb left 17:07 Xliff joined
Xliff \o 17:07
librasteve thanks for the explanation…
Xliff Can you decompose a hash in a signature?
m: sub a (%a (a => True ) ) { %a.gist.say }; a; 17:08
camelia ===SORRY!=== Error while compiling <tmp>
Invalid typename 'a' in parameter declaration.
at <tmp>:1
------> sub a (%a (a⏏ => True ) ) { %a.gist.say }; a;
Xliff m: sub a (%a { a => True } ) { %a.gist.say }; a;
camelia ===SORRY!=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> sub a (%a ⏏{ a => True } ) { %a.gist.say }; a;
librasteve Xliff: my small brain thinks that "decomposing a hash in a signature" is just another way of saying "named arguments" ... the example you give is composing the hash in the signature afaict 17:12
Xliff Yeah, but I want to use a slurpy and assign defaults.
librasteve oh - I see ... let me think 17:13
Xliff Thanks!
librasteve m: sub fn( :$a = 1, :$b = 2, *%h ) { say $a, $b; say %h; }; fn( |%(a=>1, b=>2, c=>3) ); 17:20
evalable6 12
{c => 3}
Raku eval 12 {c => 3}
librasteve so that's what I have in mind when you say decompose a hash in a signature with defaults and with a slurpy ... sorry I this is a pretty dumb answer likely I do not understand what you are asking 17:21
17:23 abraxxa-home joined
oh, maybe you want to pass in a single hash and have the signature set value defaults for some of the hash items 17:24
sorry don't know how to do that ;-( 17:29
ugexe you can't defaults on the hash itself, but you can on named parts of it 17:38
m: sub foo(%_ [:$foo = 42, *%]) { say %_.raku; say $foo }; my %x; foo(%x) 17:39
camelia {}
42
librasteve m: multi sub fn(:$a=1,:$b=2,*%r) {samewith %(|%r, :$a, :$b)}; multi sub fn( %h ) {%h.say}; fn( |%(a=>1,c=>3) ); 17:40
evalable6 {a => 1, b => 2, c => 3}
Raku eval {a => 1, b => 2, c => 3}
librasteve ^^ just an idea with multis
17:45 abraxxa-home left 18:20 jpn joined
Xliff librasteve: That is close, but the extra multi makes it difficult for my use case.... I would need to reorganize a LOT of code. 18:50
librasteve++: Thanks, anyways! 18:51
librasteve no problem 18:55
19:38 jpn left 20:26 merp left 20:31 merp joined
guifa Assuming the answer is no but.... do we have compiler hooks yet for RakuAST mischief? 20:43
I'm in an analysis class right now and realizing how nicely I could most of this in LLVM analysis could apply to RAST 20:44
antononcube @guifa Interestingly, right now I am considering how too use LLMs instead of RakuAST. 20:46
20:53 jpn joined
Xliff LLM? Large Language Models? 21:20
21:29 Sgeo joined 21:51 jpn left
antononcube @Xliff Yes. 22:05
Xliff How would you use LLMs in place of RakuAST? 22:12
Or is it just that you are putting more effort into LLMs? 22:13
22:47 jpn joined 22:52 jpn left
antononcube @Xliff What is the mission of RakuAST? I assume it is better Raku code generation. (Faster generation, more reliable and maintainable, easier to read.) 23:25
Well, that is the main RakuAST mission, then Raku generation can be delegated to LLMs using the related reliable, easier to manager workflows. 23:26
Ideally, the transition of NQP code to RakuAST should be supported by LLMs. (Or event completely outsourced to them.) 23:27
lizmat antononcube there is no NQP code to be transitioned to RakuAST? 23:36
23:47 jpn joined
Xliff antoncube: Actually, RakuAST is also used as output for the parser. 23:50
Parse the code, you get a RakuAST tree. Walk the tree you can either get the Raku code back, or something akin to bytecode. 23:51
At least that's how I understand it.
23:53 jpn left