Dato un elenco [Some 1; Some 2; Some 3]
Desidero un'uscita Some 6
. Dato un elenco [Some 1; None]
dovrebbe produrre None
.Lista di opzioni a scomparsa
Ma lo trovo un po 'più difficile di quanto avessi immaginato di ottenere in modo pulito.
il meglio che potevo venire con era presente
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)
Questa è una traversa, se si avesse 'sequenzaA' sarebbe' sequenzaA [Alcuni 1; Alcuni 2; Alcuni 3] |> Option.map List.sum' cercano il codice per sequenceA, FsControl lo ha. – Gustavo
@Gustavo;) dovresti fare una risposta - anche se penso che 'FsControl' sia un po 'pesante per il * common * F # er ...' pure' Haskell invidia se vuoi ^^ – Carsten
Sì @Carsten, I d'accordo è troppo pesante solo per questo codice, è per questo che ho fatto come un commento. È una soluzione a un solo liner, potrebbe essere generalizzata e ulteriormente ridotta a 'sequenceA [Some 1; Alcuni 2; Alcuni 3] | >> somma'. – Gustavo