2013-01-05 16 views
9

Monadクラスは、二つのモナドアクションを配列>>方法を定義:Haskellの標準ライブラリに<<がないのはなぜですか?

>> :: Monad m => m a -> m b -> m b 

結合オペレータ>>=有する反転引数と同等、=<<。モナド関数構成( 'fish')演算子>=><=<と同様です。しかし、(ホーグリングの数分後に)<<のようではありません。どうしてこれなの?

編集:大したことではないことは分かっています。私はちょうどコードの特定の行が左を指している演算子で見える方法が好きです。 x <- doSomething =<< doSomethingElseは、矢印がすべて同じ方法で、より良く見えるだけです。x <- doSomethingElse >>= doSomethingよりです。

+0

誰もそれのためのケースを作った。 –

+0

'= <<'と '<= <'をつけたとき、彼らはそれを考えなかったのですか?なぜそれが私を悩ませているのか分からない、それはちょうど監視のように思える。 –

+0

これらの例はどちらも同じことをしていますか? – MathematicalOrchid

答えて

10

私の知る限り、正当な理由はありません。 MonadApplicativeのインスタンスである必要があります。そのため、シーケンスツールとして<**>を使用できます。

+0

良いアイデア!ありがとう。 –

+10

しかし、 '*>'は '>>'と同じですが、 'a <* b'は' b *> a'と等価ではありません。 – dave4420

+0

@ dave4420これは良い点です。 'flip(*>)'と 'flip(>>)'は常にオプションです。 –

関連する問題