【发布时间】:2022-01-14 19:04:29
【问题描述】:
我正在尝试将绑定 (>>=) 和 Kleisli 组合 (>=>) 运算符与基本 Result 类型一起使用,但它们要么未定义,要么不在范围内:
let f x =
if x%2 = 0 then Ok (x/2)
else Error ()
let ff x = Ok x >>= f >>= f
let ff' = f >=> f
[<EntryPoint>]
let main _ =
printfn "%A" (ff 12)
printfn "%A" (ff' 28)
0
错误 FS0043 需要一个支持运算符“>>=”的类型,但给定了一个函数类型。您可能缺少函数的参数。
我尝试open 几个不同的命名空间来将定义纳入范围,但没有成功。
从this 看来,如果没有扩展,通常无法定义运算符,但在任何地方都有标准Result 的定义吗?
【问题讨论】: