File tree Expand file tree Collapse file tree 1 file changed +6
-10
lines changed
Expand file tree Collapse file tree 1 file changed +6
-10
lines changed Original file line number Diff line number Diff line change @@ -75,24 +75,20 @@ module AsyncResult =
7575 | Error err1, Error _ -> Error err1
7676 }
7777
78- let private (<!>) = map
79- let private (<*>) = apply
80-
8178 let traverse : ( 'a -> 'b ) -> List < AsyncResult < 'a , 'err >> -> AsyncResult < 'b list , 'err > =
8279 fun transformer list ->
83- let cons head tail = head :: tail
84-
8580 let rec fold acc =
8681 function
87- | [] -> acc
88- | xA :: xAs ->
89- ( transformer >> cons) <!> xA <*> acc
90- |> bind ( fun nextAcc -> fold ( singleton nextAcc) xAs)
82+ | [] -> acc |> List.rev |> singleton
83+ | xA :: xAs -> bind ( fun x -> fold ( transformer x :: acc) xAs) xA
9184
92- fold ( singleton []) list |> map List.rev
85+ fold [] list
9386
9487 let sequence : List < AsyncResult < 'a , 'error >> -> AsyncResult < 'a list , 'error > = fun list -> traverse id list
9588
89+ let private (<!>) = map
90+ let private (<*>) = apply
91+
9692 let map2 : ( 'a -> 'b -> 'c ) -> AsyncResult < 'a , 'err > -> AsyncResult < 'b , 'err > -> AsyncResult < 'c , 'err > =
9793 fun f a1 a2 -> f <!> a1 <*> a2
9894
You can’t perform that action at this time.
0 commit comments