We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 14f57a7 commit 1115022Copy full SHA for 1115022
src/Insurello.AsyncExtra/AsyncExtra.fs
@@ -77,12 +77,14 @@ module AsyncResult =
77
78
let traverse : ('a -> 'b) -> List<AsyncResult<'a, 'err>> -> AsyncResult<'b list, 'err> =
79
fun transformer list ->
80
- let rec fold acc =
81
- function
+ let cons tail head = head :: tail
+
82
+ let rec fold remaining acc =
83
+ match remaining with
84
| [] -> acc |> List.rev |> singleton
- | xA :: xAs -> bind (fun x -> fold (transformer x :: acc) xAs) xA
85
+ | xA :: xAs -> xA |> bind (transformer >> cons acc >> fold xAs)
86
- fold [] list
87
+ fold list []
88
89
let sequence : List<AsyncResult<'a, 'error>> -> AsyncResult<'a list, 'error> = fun list -> traverse id list
90
0 commit comments