(>>=) と (>=>) の違いについて
ChatGPT で教えてもらったところ
簡単に試してみたところ、以下のようなコードになったのですが
違いは最初の関数 (f) の引数の渡し方くらいでした。
この二つの違いは、そのくらいの認識で問題ないでしょうか ?
ChatGPT で教えてもらったところ
(>>=)はバインド演算子と呼ばれ、モナド値を取り、モナドの中の値を抽出し、それを次の関数に渡します。との事でした。
一方、(>=>)は関数合成演算子であり、モナドを扱う関数を合成するための演算子です。
簡単に試してみたところ、以下のようなコードになったのですが
違いは最初の関数 (f) の引数の渡し方くらいでした。
この二つの違いは、そのくらいの認識で問題ないでしょうか ?
import Control.Monad f x = Just $ x + 1 g x = if x > 0 then Just (x * 2) else Nothing h x = Just $ "The number is " ++ show x fgh = f >=> g >=> h fgh' x = f x >>= g >>= h main = do putStrLn $ show $ fgh 1 putStrLn $ show $ fgh' 1