Skip to content

Commit 897f80d

Browse files
committed
Updates Hopac traverseResultA performance
1 parent 368e6db commit 897f80d

File tree

1 file changed

+5
-5
lines changed
  • src/FsToolkit.ErrorHandling.JobResult

1 file changed

+5
-5
lines changed

src/FsToolkit.ErrorHandling.JobResult/List.fs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ module List =
55
open Hopac
66
let rec private traverseJobResultM' (state : Job<Result<_,_>>) (f : _ -> Job<Result<_,_>>) xs =
77
match xs with
8-
| [] -> state
8+
| [] -> state |> JobResult.map List.rev
99
| x :: xs ->
1010
job {
1111
let! r = jobResult {
1212
let! ys = state
1313
let! y = f x
14-
return ys @ [y]
14+
return y :: ys
1515
}
1616
match r with
1717
| Ok _ ->
@@ -28,14 +28,14 @@ module List =
2828

2929
let rec private traverseJobResultA' state f xs =
3030
match xs with
31-
| [] -> state
31+
| [] -> state |> JobResult.map List.rev
3232
| x :: xs ->
3333
job {
34-
let! s = state
34+
let! s = state
3535
let! fR = f x |> JobResult.mapError List.singleton
3636
match s, fR with
3737
| Ok ys, Ok y ->
38-
return! traverseJobResultA' (JobResult.retn (ys @ [y])) f xs
38+
return! traverseJobResultA' (JobResult.retn (y :: ys)) f xs
3939
| Error errs, Error e ->
4040
return! traverseJobResultA' (JobResult.returnError (errs @ e)) f xs
4141
| Ok _, Error e | Error e , Ok _ ->

0 commit comments

Comments
 (0)