のデータ型としてを選択しmonadPlusSDif
た場合、両方の関数は同等ですか?Maybe
MonadPlus
tdif :: Int -> Int -> Maybe Int
tdif x y
| y == 0 = Nothing
| otherwise = Just (div x y)
monadPlusSDif :: MonadPlus m => Int -> Int -> m Int
monadPlusSDif x y = guard (y /= 0) >> return (div x y)