如何在 f# 中将 Result<'a,'b> 映射到 Reader<Result<'a,'b>?



我有一个函数将函数映射到"Reader-Result",其中f是'a->'b: ('a->'b) -> Reader<Result<'a,'c>> -> Reader<Result<'b,'c>>

let map f = Reader.map <| Result.map f

但是我如何编写一个类似的映射,将函数'a->Result<'b,'c>作为输入?

类似于

map 的函数,但其参数返回Result<_,_>,称为 bind 。它的签名是:

bind : ('a -> Result<'b, 'c>) -> Result<'a, 'c> -> Result<'b, 'c>

我假设您想要的签名是:

yourFunction : ('a -> Result<'b, 'c>) -> Reader<Result<'a, 'c>> -> Reader<Result<'b, 'c>>

要获得这样的功能,请将Result.bindReader.map结合起来:

yourFunction f = Reader.map <| Result.bind f

相关内容

  • 没有找到相关文章

最新更新