Add Result module (#29)

This commit is contained in:
Patrick Stevens
2025-06-01 14:51:28 +01:00
committed by GitHub
parent 508b45a3d3
commit e0ad3a3b54
2 changed files with 21 additions and 1 deletions

View File

@@ -0,0 +1,19 @@
namespace WoofWare.PawPrint
[<RequireQualifiedAccess>]
module internal Result =
let allOkOrError<'a, 'b> (rs : Result<'a, 'b> list) : Result<'a list, 'a list * 'b list> =
let rec go (oks : 'a list) (errs : 'b list) rs =
match rs with
| Ok ok :: rest -> go (ok :: oks) errs rest
| Error e :: rest -> go oks (e :: errs) rest
| [] ->
let oks = List.rev oks
if List.isEmpty errs then
Ok oks
else
Error (oks, List.rev errs)
go [] [] rs

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<WoofWareMyriadPluginsVersion>7.0.7</WoofWareMyriadPluginsVersion>
@@ -7,6 +7,7 @@
<ItemGroup>
<Compile Include="Tuple.fs" />
<Compile Include="Result.fs" />
<Compile Include="StringToken.fs" />
<Compile Include="Tokens.fs" />
<Compile Include="TypeRef.fs" />