diff --git a/src/FsToolkit.ErrorHandling/Seq.fs b/src/FsToolkit.ErrorHandling/Seq.fs index 927d7383..9a1c2e99 100644 --- a/src/FsToolkit.ErrorHandling/Seq.fs +++ b/src/FsToolkit.ErrorHandling/Seq.fs @@ -3,13 +3,13 @@ namespace FsToolkit.ErrorHandling [] module Seq = - let sequenceResultM (xs: seq>) : Result<'t list, 'e> = + let sequenceResultM (xs: seq>) : Result<'t seq, 'e> = let rec loop xs ts = match Seq.tryHead xs with | Some x -> x |> Result.bind (fun t -> loop (Seq.tail xs) (t :: ts)) - | None -> Ok(List.rev ts) + | None -> Ok(List.rev ts |> List.toSeq) // Seq.cache prevents double evaluation in Seq.tail loop (Seq.cache xs) [] diff --git a/tests/FsToolkit.ErrorHandling.Tests/Seq.fs b/tests/FsToolkit.ErrorHandling.Tests/Seq.fs index a23a80c0..1b201559 100644 --- a/tests/FsToolkit.ErrorHandling.Tests/Seq.fs +++ b/tests/FsToolkit.ErrorHandling.Tests/Seq.fs @@ -24,6 +24,7 @@ let sequenceResultMTests = let actual = Seq.sequenceResultM (Seq.map Tweet.TryCreate tweets) + |> Result.map Seq.toList Expect.equal actual expected "Should have an empty list of valid tweets" @@ -34,6 +35,7 @@ let sequenceResultMTests = let actual = Seq.sequenceResultM (Seq.map Tweet.TryCreate tweets) + |> Result.map Seq.toList Expect.equal actual expected "Should have a list of valid tweets"