To expand slightly on what Clifton said, the reason that
> %a<column3> = %a<column1>.map: { .sqrt };
> # (1 1.4142135623730951 1.7320508075688772 2 2.23606797749979)
does what you mean but
> %a{'column1'} ==> map( { .sqrt } )
> # (2.23606797749979)
does not is that the method .map maps over *each item* in the Array, whereas
==> map maps over the Array as *one collection*. When taking the square root,
an Array needs to be treated as an number, which for Raku means treating it as
a count of how many elements it has (i.e., its length).
So `%a{'column1'} ==> map({.sqrt})` is the same as
`%a{'column1'}.elems.map({.sqrt})`
If want to map over each item in the Array when using the ==> operator, you
need to
slip the items out of the Array before feeding them on. You can do that with
either
of the following (equivalent) lines:
> %a{'column1'}.Slip ==> map({.sqrt});
> |%a{'column1>'}==> map({.sqrt});
(Also, you may already know this, but when the keys of your hash are strings,
you
can write %a<column1> instead of %a{'column1'} )
Hope that helps!
–codesections