我是一个haskell新手,不知道如何以富有表现力的方式组合以下功能:
f :: A -> B
g :: B -> Maybe C
h :: C -> Bool
我想要这样的功能:
y :: A -> Bool
目前我正在这样做:
y a = case (fmap h ((g.f) a)) of {
Just b -> b;
Nothing -> False}
好吧,我认为,这真的很丑(好吧,这里只有字母作为名称,但真正的代码也很丑)。我想要的是功能的串联,它更具表现力,例如:
y a = (h.g.f) a `or` False
如何将单子函数与函子结合起来,是否有类似的东西or
(比如Optional#orElse
在 Java 8 中?)