问题
在书里
程序员范畴理论
作者Bartosz Milewski,第4.3章。
你必须编写一个Kleisli范畴,其中态射是部分函数。以下是我不编译的尝试:
data Optional a = Valid a | Invalid deriving (Show)
return :: a -> Optional a
return x = Valid x
(>=>) :: (a -> Optional b) -> (b -> Optional c) -> (a -> Optional c)
f (>=>) g = \x ->
let s = f x
in | s == Valid v = g v
| s == Invalid = Invalid
在
>=>
运算符定义,我想模式匹配中间值
s
测试是否
Valid
(然后打电话
f
)如果是的话
Invalid
(然后返回
无效的
). 我该怎么做?