Учитывая список [Some 1; Some 2; Some 3]
, я хотел бы получить результат Some 6
. Учитывая список [Some 1; None]
должен дать None
.
Но я нахожу это немного сложнее, чем я себе представлял, чтобы добиться этого чистым способом.
Лучшее, что я мог придумать, это
let someNums = [Some 1; Some 2; Some 3]
someNums
|> List.reduce (fun st v ->
Option.bind (fun x ->
Option.map (fun y -> x + y) st) v )
sequenceA
это было быsequenceA [Some 1; Some 2; Some 3] |> Option.map List.sum
ищите код для sequenceA, он есть в FsControl. - person Gus   schedule 05.03.2016FsControl
просто немного тяжеловат для общего F#er ...pure
Haskell завидует, если хотите ^^ - person Random Dev   schedule 05.03.2016sequenceA [Some 1; Some 2; Some 3] |>> sum
. - person Gus   schedule 05.03.2016