1

我有将函数映射到“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>为输入的类似地图呢?

4

1 回答 1

2

调用类似于map,但其参数返回 a 的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.bind结合Reader.map

yourFunction f = Reader.map <| Result.bind f
于 2018-03-08T18:57:52.817 回答