02:01 rakuUser left 06:16 yjh joined
yjh Hello. Is this the right place to be to ask about a problem installing a module? 06:17
10:10 mjgardner left 10:11 mjgardner joined 10:28 rakuUser joined
Anton Antonov Is there a function or idiom that lets me get a Hash without specified elements. I.e. something like : `my %h = {a=>1,b=>8,c=>4}; %h.key-drop<a c>` would return `{b=>8}`. 13:30
I know I can use `my %h1 = %h; %h1<a c>:delete; %h1` . 13:31
lizmat do a c need to be removed from the hash? or just not part of the return value? 13:38
Anton Antonov The latter, just not part of the returned value.
lizmat something like: my %h = :42a, :666b, :12c; dd (%h{%h.keys.grep(* ne "a"|"b")}:p).hash ? 13:40
if you would be happy with a list of Pairs, you can drop the outer ().hash 13:41
Anton Antonov Thanks, Liz. This does what I want: `%h{%h.keys.grep(* !(elem) <a b>)}:p` . 13:44
Thanks, Liz! This does what I want: `%h{%h.keys.grep(* !(elem) <a b>)}:p` .
lizmat you could also use ∉ instead of !(elem) :-) 13:45
Morfent if you're using setty ops... 13:46
my %h = a=>1, b=>8, c=>4;
say %(%h{%h (-) <a b>}:p)
Anton Antonov Ah, I know, I have hard time entering it, and, *to me*, in Raku `!(elem)` looks more readable. 13:47
lizmat sure :-)
Anton Antonov <@!210313526928080896> Yes, I like that.
@lizmat In Mathematica I do prefer using `∈` and `∉`. 13:49
Nemokosch what is `%h{}` for? 13:59
lizmat it's called the zen-slice... it is basically the same as %h but %h{} can be interpolated in a double quoted string
Anton Antonov <@!297037173541175296> For getting a elements / values out of a dictionary/hash.
lizmat ah, I thought the empty {} was meant :-) 14:00
Anton Antonov Liz, I think it is...
Nemokosch hm? 14:05
Anton Antonov How can I merge an arbitrary list of hashes? Is there some reduction operation for `%a , %b` ? 14:31
How can I merge an arbitrary list of hashes? Is there some reduction operation for `my %c = %a , %b` ?
Of course, I can always use a `for` loop. 14:32
lizmat what's wrong with my %c = %a, %b ? 14:38
Anton Antonov @lizmat `my %c = %a, %b` is fine for two hashes. Let us consider having an array of hashes, e.g. `my Hash @arr = [ %( ...]`. I would like to merge all hashes in that array into one hash. I can use `my %hres = do for @arr -> %h {%hres = %hres , %h}`, but I was wondering can I use something like `[,] @arr` . 14:50
lizmat perhaps: my @a is List = {:42a},{:666b},{:777c}; dd @a; my %h = @a; dd %h 14:53
my %h = @a does the right thing if there are no containers involved 14:54
if it has to be an Array, then something like: my @a = {:42a},{:666b},{:777c}; dd @a; my %h = @a.map: *<>; dd %h
basically de-containerizing the elements of the array 14:55
Anton Antonov Lizmat, these are great options -- I will study them. Thanks! 14:58
yjh Is there a reason %?RESOURCES<libraries/sha1> would return a path with filename extension 'lib' instead of 'dll' on windows? 15:00
lizmat that feels... odd 15:02
gfldex m:``` 17:50
my %h = :1a, :8b, :4c;
dd %h.grep(*.key ne 'a'|'b').hash;
[Coke] the lib vs. dll question is "why am I getting a static library instead of a dynamic one?" 18:08