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