3

do 記法内で純粋な関数とモナド関数を混同するのに問題があります。明らかな何かが欠けていると感じています。

たとえば、これらの関数を取得したとします

fa :: a -> IO b
fb :: b -> c
fc :: c -> IO d

z :: a -> IO c
z a = do x <- fa a
         y <- fb x
         z <- fc y
         return z

これは機能しません。

y <- fb x

z の行ですが、純粋な fb 関数をモナドの fa および fc 関数と組み合わせるエレガントな方法は何ですか?

4

3 に答える 3