私は 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
どうすればモナド関数とファンクターを組み合わせることができますか? ( Java 8or
のように?)Optional#orElse