FsToolkit.ErrorHandling.AsyncSeq 4.16.0

dotnet add package FsToolkit.ErrorHandling.AsyncSeq --version 4.16.0                
NuGet\Install-Package FsToolkit.ErrorHandling.AsyncSeq -Version 4.16.0                
该命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="FsToolkit.ErrorHandling.AsyncSeq" Version="4.16.0" />                
对于支持 包引用 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add FsToolkit.ErrorHandling.AsyncSeq --version 4.16.0                
#r "nuget: FsToolkit.ErrorHandling.AsyncSeq, 4.16.0"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将该指令复制到交互式工具或脚本的源代码中以引用包。
// Install FsToolkit.ErrorHandling.AsyncSeq as a Cake Addin
#addin nuget:?package=FsToolkit.ErrorHandling.AsyncSeq&version=4.16.0

// Install FsToolkit.ErrorHandling.AsyncSeq as a Cake Tool
#tool nuget:?package=FsToolkit.ErrorHandling.AsyncSeq&version=4.16.0                

FsToolkit.ErrorHandling

FsToolkit.ErrorHandling 是一个用于在 F# 中与 Result 类型一起工作的实用程序库,允许你进行清晰、简单且强大的错误处理。

此库提供了如 mapbindapplytraversesequence 等实用函数,以及计算表达式和内联运算符,可用于处理 Result<'a, 'b>Result<'a option, 'b>Async<Result<'a, 'b>>Async<Result<'a option, 'b>>Result<'a, 'b list>

此库灵感来自 Chessie 和 Cvdm.ErrorHandling(后者现已合并到 FsToolkit.ErrorHandling)。

FsToolkit.ErrorHandling 面向 .NET Standard 2.0 和 .NET Framework 4.6.1,并支持 Fable。

文档

文档可在 此处 获取。

其他资料

构建

GitHub Actions
GitHub Actions
Build History

NuGet

包名称 发布 预发布
FsToolkit.ErrorHandling NuGet NuGet
FsToolkit.ErrorHandling.TaskResult NuGet NuGet
FsToolkit.ErrorHandling.JobResult NuGet NuGet
FsToolkit.ErrorHandling.AsyncSeq NuGet NuGet
FsToolkit.ErrorHandling.IcedTasks NuGet NuGet

本地开发

Devcontainer

此仓库为 VSCode 提供了 devcontainer 设置。有关更多信息,请参阅

本地设置

可选

为了在本地测试fable构建,您需要

  • Node
    • v18.0.0 或更高版本
    • 不强制要求,但建议您使用NVM轻松管理多个版本的Node
  • Python
    • v3.10.0 或更高版本
    • 对于 Fable-Python 是必需的
编译
> build.cmd <optional buildtarget> // on windows
$ ./build.sh  <optional buildtarget>// on unix

未指定构建目标时,默认目标为 DotnetPack,该目标将在 dotnet 上运行所有项目的测试,然后打包项目为 nuget 包。对于其他重要的目标,请参阅以下内容。

构建目标
  • clean - 将清理所有项目的 binobj 文件夹
  • DotnetTest - 将运行 dotnet 项目的测试
  • NpmTest - 将运行 fable-javascript 项目的测试
  • PythonTest - 将运行 fable-python 项目的测试
  • RunTests - 将运行 dotnetfable-javascriptfable-python 项目的测试
  • FormatCode - 将运行 fantomas 对代码库进行格式化

这不是一个详尽的列表。额外的目标可以在 ./build/build.fs 文件中找到。

一个激励性的示例

这个关于组合登录流程的示例展示了这个库如何通过仅使用计算表达式和一些辅助函数,在清晰的、简单的和强大的错误处理中发挥作用。(该库还有许多其他辅助函数和计算表达式,以及中缀运算符;有关详细信息,请参阅文档。)

// Given the following functions:
//   tryGetUser: string -> Async<User option>
//   isPwdValid: string -> User -> bool
//   authorize: User -> Async<Result<unit, AuthError>>
//   createAuthToken: User -> Result<AuthToken, TokenError>

type LoginError = InvalidUser | InvalidPwd | Unauthorized of AuthError | TokenErr of TokenError

let login (username: string) (password: string) : Async<Result<AuthToken, LoginError>> =
  asyncResult {
    // requireSome unwraps a Some value or gives the specified error if None
    let! user = username |> tryGetUser |> AsyncResult.requireSome InvalidUser

    // requireTrue gives the specified error if false
    do! user |> isPwdValid password |> Result.requireTrue InvalidPwd

    // Error value is wrapped/transformed (Unauthorized has signature AuthError -> LoginError)
    do! user |> authorize |> AsyncResult.mapError Unauthorized

    // Same as above, but synchronous, so we use the built-in mapError
    return! user |> createAuthToken |> Result.mapError TokenErr
  }

赞助商

<a href="https://www.ajira.tech"><img src="./Ajira-logo.png" alt="Ajira Technologies, India" width="200" /></a>

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 兼容。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard

NuGet 包

此包不被任何 NuGet 包使用。

GitHub 仓库

此包不被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
4.16.0 78 7/15/2024
4.15.3 67 7/14/2024
4.15.3-beta001 50 7/14/2024
4.15.2 110 5/2/2024
4.15.2-beta001 43 5/2/2024
4.15.1 459 1/15/2024
4.15.0 21,957 1/10/2024
4.14.0 384 1/2/2024
4.13.0 145 12/10/2023
4.13.0-beta002 95 12/10/2023
4.13.0-beta001 79 12/10/2023
4.12.0 142 11/27/2023
4.11.1 122 11/23/2023
4.11.0 118 11/11/2023
4.10.0 152 10/16/2023
4.9.0 2,010 7/10/2023
4.8.0 146 7/7/2023
4.7.0 147 6/21/2023
4.7.0-beta001 96 6/21/2023
4.6.0 2,684 4/20/2023
4.6.0-beta001 82 4/20/2023
4.5.0 1,064 3/27/2023
4.5.0-beta002 98 3/19/2023
4.5.0-beta001 107 3/6/2023
4.4.0 239 2/21/2023
4.3.0 300 1/20/2023
4.2.1 271 12/19/2022
4.2.0 291 12/17/2022
4.1.0 258 12/13/2022
4.1.0-beta001 92 12/13/2022
4.0.0 369 11/19/2022
4.0.0-beta001 109 11/19/2022
3.3.1 41,262 11/19/2022
3.3.1-beta004 104 11/19/2022
3.3.1-beta003 111 11/18/2022
3.3.1-beta002 97 11/18/2022
3.3.1-beta001 120 11/18/2022
3.3.0-beta001 127 11/9/2022
3.2.0 4,501 10/31/2022
3.2.0-beta001 99 10/31/2022
3.1.0 481 10/19/2022
3.0.1 370 10/18/2022
3.0.0 415 10/14/2022
3.0.0-beta008 133 10/14/2022
3.0.0-beta007 9,119 4/15/2022
3.0.0-beta006 126 4/5/2022
3.0.0-beta005 144 4/5/2022
3.0.0-beta004 119 4/5/2022
3.0.0-beta003 119 3/30/2022
3.0.0-beta002 135 2/21/2022
3.0.0-beta001 137 2/21/2022
2.13.0 6,604 1/11/2022
2.13.0-beta001 152 1/11/2022
2.12.0 255 1/6/2022
2.12.0-beta001 146 1/6/2022
2.11.1 1,328 12/1/2021
2.11.1-beta001 754 12/1/2021
2.11.0 3,210 11/24/2021
2.11.0-beta004 3,151 11/24/2021
2.11.0-beta002 3,160 11/24/2021
2.11.0-beta001 3,076 11/24/2021

- [添加 Task.ignore](https://github.com/demystifyfp/FsToolkit.ErrorHandling/pull/272) 信用 @odytrice