Hacker News new | ask | show | jobs
by vikestep 2331 days ago
In support of the article, your code would still throw an exception if all the customers in the list have missing credit.

https://github.com/dotnet/fsharp/blob/master/src/fsharp/FSha...

You could instead write it as the following to handle that.

  let average (customers : Customer list) =
      customers
      |> List.choose (fun c -> c.Credit)
      |> function 
         | [] -> Error "no customers with credit"
         | xs -> Ok (List.average xs)
1 comments

Indeed. I was remembering the behaviour of average off the top of my head.