通常はパターン マッチだけでよいことはわかっていますが、次の関数が役立つ場合もあります。
isLeft = either (const True) (const False)
isRight = either (const False) (const True)
標準ライブラリにそのようなものはありますか?
指摘されているように、標準ライブラリにはそのような関数はなく、さまざまな方法で独自に実装できます。
ただし、「X は標準ライブラリにありますか?」という形式の質問に注意してください。関数の名前がわからなくても、その型で検索できるため、Hoogleが最も簡単に答えます。
Hoogle はまた、引数の順序が重要ではないことを認識できるほど賢く、検索した型よりも類似した (たとえば、より一般的な) 型の結果も表示します。
この場合、 を検索しEither a b -> Bool
ても有望な一致が得られないため、標準ライブラリに存在しないことを示す良い指標です。
いいえ、しかしあなたは書くことができます:
import Data.Either
isLeft = null . rights . return
isRight = null . lefts . return
いいえ、ありません。
しかし、これらの関数をさらに簡単に定義できます*:
isLeft (Left _) = True
isLeft _ = False
isRight
もちろん、同じことが言えます。
編集: * わかりました、より多くのコード行が必要になるため、それが簡単かどうかは議論の余地があると思います...
私の知る限り、標準ライブラリにはこのようなものはありません。ただし、自分で簡単に定義できます。
either l _ (Left a) = l a
either _ r (Right b) = r b
isLeft (Left _) = True
isLeft _ = False
isRight (Right _) = True
isRight _ = False