私は通常はパターンマッチすることができます知っているが、時々私は、これらの機能が便利になります。左(または右)かどうかを聞くことができますか?
isLeft = either (const True) (const False)
isRight = either (const False) (const True)
は、標準ライブラリのようなものはありますか?
私は通常はパターンマッチすることができます知っているが、時々私は、これらの機能が便利になります。左(または右)かどうかを聞くことができますか?
isLeft = either (const True) (const False)
isRight = either (const False) (const True)
は、標準ライブラリのようなものはありますか?
これはかなり古いものですが、参照用にここに投稿しています。
これは4.7以降Data.Either
下の標準ライブラリになりました:指定された値は左値、そうでなければFalseであれば
https://hackage.haskell.org/package/base-4.7.0.0/docs/Data-Either.html
isLeft :: Either a b -> Bool
trueを返します。指定された値が右値、そうでなければFalseであれば
isRight :: Either a b -> Bool
trueを返します。
いいえ、afaikはありません。
isLeft (Left _) = True
isLeft _ = False
同じ
はもちろん、isRight
のために行く:
しかし、あなたは*でも簡単にこれらの関数を定義することができます。
EDIT:*さて、私はありません
...それは簡単ですかどうかは、コードの複数行を必要とするので、それは、議論の余地だと思うが、あなたが書くことができます。
import Data.Either
isLeft = null . rights . return
isRight = null . lefts . return
おそらく、それは関数を定義するのはむしろ単純ではない方法なので。 「どちらか」の定義やパターンマッチングを使用すると、おそらく理解が容易になるでしょう。 –
できます。私は、「どちらかの」機能が利用可能な機能がほとんどないことに少し失望しています。私は少なくとも 'leftMaybe ::どちらかa b a>たぶんa'とそれに相当するものを期待しています。 – Landei
を限り私は知っている、標準ライブラリにこれのようなものはない。しかし、あなたはそれを簡単に定義することができます。
either l _ (Left a) = l a
either _ r (Right b) = r b
isLeft (Left _) = True
isLeft _ = False
isRight (Right _) = True
isRight _ = False
OPは、isLeftとisRightが標準ライブラリ内に異なる名前であるかどうかを知りたいと思っています。彼は、標準ライブラリで*どちらかであるかのどちらかですでに定義できることを知っています。 – dave4420
同様の回答に-1がないため、これを+1しました。彼は質問に答えました。 – alternative
人々が指摘しているように、標準ライブラリにはそのような機能はなく、さまざまな方法で独自の機能を実装することができます。
ただし、という形式の質問は、「標準ライブラリにはXがありますか?」という質問に注意してください。 ファンクションの名前がわからなくても、タイプで検索することができます。は、Hoogleによって最も簡単に回答されます。
Hoogleも、引数の順序は重要ではないことを知るには十分にスマートで、タイプが検索したタイプと類似している(より一般的な)結果も表示されます。
この場合、Either a b -> Bool
does not yield any promising matchesを検索すると、標準ライブラリには存在しないことがわかります。
Hoogleのアドバイスはまだまだですが、標準ライブラリ*にはこのような機能があります。 [この質問に対する他の回答](http://stackoverflow.com/a/24046158/1126841)を参照してください。 – chepner
私は@ pyrospadeが受け入れられた答えになるはずだと思います。 – SwiftsNamesake