5

私は現在、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.)

その前に、そのような状況に対処するヘルパーがすでに存在するかどうかを尋ねたいと思います. もちろん、私は全体について混乱する可能性もあり、これを行うべきではない理由もあります. もしそうなら、教えてください。

4

1 に答える 1

7

やらない理由はありません。ただし、ほとんど必要ありません。たとえば、ユース ケースは次のように書き換えることができます。

composed = divideTenBy . (*10) <=< divideTenBy . (-)5
于 2012-04-01T04:12:08.287 に答える