FSharp: use more efficient constructs where possible