HR F#: Updating List

The problem Updating List requires learning how to generate one list from another.

Update the values of a list with their absolute values.

In many other programming languages the common approach is to update the array items: a[i] = abs(a[i]);, e.g. modify the shared state. The functional way change the list implies using immutable data structures so instead of modifying the list let's generate the new one with negative elements inverted:

// this function returns new list created by inverting
// negative items in the given list arr
let f arr = arr |> (fun v -> if v < 0 then -v else v)

//----------------DON'T MODIFY---------------
let input = 
    stdin.ReadToEnd().Split '\n' 
    |> x -> int(x)) 
    |> Array.toList
let print_out (data:int list) = List.iter (fun x -> printfn "%A" x) data

print_out (f(input))