クラス名・変数名に迷ったら書き込むスレ。Part27 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0473デフォルトの名無しさん
2016/12/04(日) 11:58:09.74ID:W7gPj0hXf :: Either a b -> Either a b -> Either a b
Left _ `f` e = e
e `f` _ = e
つまり、(Right x) `f` (何か Either) ならば左側の Right x の値に、
(Left x) `f` (何か Either) ならば右側の Either 型の値になる関数です。
想定している主な使い方としては、成否を Either 型の値で返す関数を2つ(以上)並べ、
最初の関数が成功したらその値を、失敗したら次の関数の値を使うことです。
(Monad の >>= はこの意味としては逆のことを行ってしまうので)
また、この使い方は関数を左から右へ並べることを想定しています。
その方が多くの場合でプログラムソースが読みやすいからです。
私は、failedThen を考えました。
f `failedThen` g という使い方です。
しかし、違和感が無い訳ではないです。(意図は分かってもらえるかも知れませんが)。
もしこれが、関数を右から左へ並べる使い方なら、
g `ifItFailedThat` f とでも名付ければ自然なのですが。
もし、私の考えた failedThen では根本的にマズく、
かと言ってより良い案も出てこなければ、 ?>> など適当な演算子を考えてみます。
もしかして、もう標準ライブラリや Hackage のライブラリに同等のものがあるでしょうか?
■ このスレッドは過去ログ倉庫に格納されています