私は現在、Haskellの基本をいじっていて、次の「ユースケース」に出くわしました:
ghci> let divideTenBy x | x == 0 = Nothing | otherwise = Just (10 / x)
ghci> let composed = divideTenBy <=< return . (*10) <=< divideTenBy <=< return . (-)5
ghci> Just 5 >>= composed
Nothing
ghci> Just 10 >>= composed
Just (-0.5)
したがって、ここでは基本的にモナド関数と純粋な関数を混合し、それらをモナド関数に構成しています。これはうまくreturn . (*10)
いきますが、 は一般的に必要なもののように思えますmonadify = (return.)
。
その前に、そのような状況に対処するヘルパーがすでに存在するかどうかを尋ねたいと思います. もちろん、私は全体について混乱する可能性もあり、これを行うべきではない理由もあります. もしそうなら、教えてください。