|
This channel is intended for people just starting with the Raku Programming Language (raku.org). Logs are available at irclogs.raku.org/raku-beginner/live.html Set by lizmat on 8 June 2022. |
|||
|
07:27
frost joined
07:37
Da-ding joined
|
|||
| Da-ding | Hi folks | 07:54 | |
| Why does `for` treat a hash's value as singular, while `map` treats it as plural? | |||
| ``` | |||
| > my %h = A => (1,2) | |||
| {A => (1 2)} | |||
| > for %h<A> {.say} | |||
| (1 2) | |||
| > %h<A>.map({.say}) | |||
| 1 | |||
| 2 | |||
| (True True) | |||
| ``` | |||
| Also, if I wrap the Hash in an array I can't seem to get `map` working with it: | |||
| ``` | |||
| > my @a = [{A => (1,2),},]; | |||
| [{A => (1 2)}] | |||
| > for @a { for $_.<A> { say $_ } } | |||
| (1 2) | |||
| Hi folks | 07:55 | ||
| Why does `for` treat a hash's value as singular, while `map` treats it as plural? | |||
| ` | |||
| > my %h = A => (1,2) | |||
| {A => (1 2)} | |||
| > for %h<A> {.say} | |||
| (1 2) | |||
| > %h<A>.map({.say}) | |||
| 1 | |||
| 2 | |||
| (True True) | |||
| ` | |||
| Also, if I wrap the Hash in an array I can't seem to get `map` working with it: | |||
| ` | |||
| > my @a = [{A => (1,2),},]; | |||
| [{A => (1 2)}] | |||
| > for @a { for $_.<A> { say $_ } } | |||
| (1 2) | |||
|
07:55
discord-raku-bot left
07:56
discord-raku-bot joined
08:04
discord-raku-bot left,
discord-raku-bot joined
|
|||
| Nemokosch | seems like a lot of "spamming" | 08:33 | |
| please use github gists (or some other code pasting platorm you prefer) if you want to write multiple lines of code at once | |||
| anyway, I think I can answer this one | |||
|
08:34
Nemokosch joined
|
|||
| Nemokosch | so | 08:36 | |
| m: my %h = A => (1,2); dd %h; | |||
| camelia | Hash %h = {:A($(1, 2))} | ||
| Nemokosch | m: my %h = A => (1,2); dd %h<A>; | ||
| camelia | List %h = $(1, 2) | ||
| Nemokosch | what does this tell us? That %h<A> is treated as a Scalar. | ||
|
08:38
frost left
|
|||
| Nemokosch | What happens if you treat something as a Scalar? For one, it will be iterated as one entry in a for loop. | 08:39 | |
| m: .say for $(1, 2, 3, 4) | |||
| camelia | (1 2 3 4) | ||
| Nemokosch | On the other hand, the map method only cares whether your stuff is Iterable or not | 08:41 | |
|
08:43
frost joined
|
|||
| Nemokosch | m: my $list = (1,2,3,4); dd $list; $list.map: *.say; | 08:44 | |
| camelia | List $list = $(1, 2, 3, 4) 1 2 3 4 |
||
| Nemokosch | I think this is because of this signature: > multi method map(Iterable:D \iterable) | 08:45 | |
| \iterable indicates that we drop the container altogether and rom that point on, they are all just iterables | 08:46 | ||
| however, this doesn't seem to be the behavior if you use map as a "standalone function" | |||
| m: map *.say, $(1, 2, 3, 4) | 08:47 | ||
| camelia | (1 2 3 4) | ||
| Nemokosch | the signature is: > multi sub map(&code, +values) | 08:48 | |
| And I didn't get this: | 08:52 | ||
| > Also, if I wrap the Hash in an array I can't seem to get map working with it: | |||
| I see no map in the example | |||
| Da-ding: whatcha say my man ^^ | 08:53 | ||
|
08:57
Nemokosch left
|
|||
| Da-ding | Excellent, thank you | 08:57 | |
| Sorry about posting twice. I'll be sure to use Gists etc next time | 08:58 | ||
| Da-ding! | I'll play around with `dd` and see how I go solving the second half (with the missing `map`) | 09:00 | |
| Nemokosch | By the way | ||
| what are you trying to achieve? | |||
| Da-ding! | I'm iterating over a block of JSON to parse a bunch of dependencies for another tool. It's an array of packages, which each have an array of dependency IDs | 09:02 | |
| Because the actual tasks was pretty minimal, I'm trying to stick with just a few nested blocks and using `$_`, which is where my plurality access issues are coming into it | 09:03 | ||
| Nemokosch | if you want it to act as a positional (so basically list-like), you can prefix it with @ | 09:04 | |
| I wonder if the bot works now from this end | 09:05 | ||
| m: say 'Hello' | |||
| okay, very nice | 09:06 | ||
| Da-ding! | Sweet, that does the job | 09:07 | |
| I was using `$_.<dependencies[*]` as a workaround but I presume that's much less ideal than `@($_.<dependencies>)` ? | 09:08 | ||
| Nemokosch | first off, I think you can get used to just dropping $_ when you make method calls to it | 09:09 | |
| `.<dependencies>` is just fine | |||
| second, I think [*] is a proper slice - if I were to guess, it takes up extra memory - however, you might gave a good idea | 09:10 | ||
| the so-called zen-slice might work here | |||
| so `.<dependencies>[]` | |||
| I would give it a try | |||
| Da-ding! | Nice, thank you very much | 09:12 | |
| Nemokosch | from what I know, the zen-slice is also just a kind of context assurance thing | ||
| so it doesn't create a copy or anything | |||
| no problem 🙂 | 09:14 | ||
|
09:50
Kaipii left,
Kaipii joined
10:32
Da-ding left
10:57
frost left
11:13
frost joined
11:38
frost left
11:42
frost joined
12:46
frost left
12:47
frost joined
|
|||
| stevied | anyone having problems getting the grammar preview working in comma IDE? I have the paid version. | 12:55 | |
|
14:31
frost left
21:53
Kaipii left,
Kaipii joined
21:59
n1to joined,
n1to left
22:14
deadmarshal left
22:18
deadmarshal joined
23:02
Kaipii left
23:57
Kaiepi joined
|
|||