Skip to content

Commit 14f57a7

Browse files
committed
Refactor
1 parent 9d0b2ff commit 14f57a7

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

src/Insurello.AsyncExtra/AsyncExtra.fs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)