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

Reply via email to