haskell-jp / beginners #23 at 2023-04-21 18:09:17 +0900

(>>=) と (>=>) の違いについて

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

ご認識の通りです。
>=> は Monad を扱う関数、つまり f :: Monad m => a -> m b な関数を合成するための . だと思って頂けると
早速ありがとうございました
m(_ _)m

何かもっと特別な使い方が一般的なのかと質問させていただきましたが、この考え方で間違っていなくて安心しました。