私はLearnYouSomeErlangウェブブックからErlangを学んでいます。学習中に私を殴ったことの1つは、短絡していないブール論理演算子とディスジョイント演算子です。 and
およびor
である。これらの演算子の使用例は何ですか?なぜあなたはandalso
とorelse
の代わりにそれらを使用したいですか?Erlangで非短絡ブール演算子を使用することは何ですか?
答えて
以前は、andalso
とorelse
はテール再帰的ではありませんでした(R13Aまで)。詳細は、http://www.erlang.org/eeps/eep-0017.htmlを参照してください。私は、and
/or
を新しいプログラムに使用する正当な理由はないと思います。
興味深いリンク。答えをありがとう! – missingfaktor
演算子は、はるかに古いものです。 andalso/orelse演算子は後で追加されます。今日のユースケースは、いくつかの単純なブール演算を実行したいときや、マシンサイクルの数を節約するよりも水平スペースが重要な場合です。たとえば:
X = Y and (A or B),
ではなく
X = Y andalso (A orelse B),
は目に少し簡単です。
下位互換性の理由から、元の動作を変更したり、ショートしたりすることができなかったため、新しいキーワードが必要でした。 andalso/orelseという名前はStandard MLから来ています。
私は別のことをやってそれらを参照してください、そのようにそれらを使用する:私は論理値を比較する論理演算子として
and
/or
を。彼らは厳格なので、私は自動的にタイプチェックを取得し、私はKNOW何が呼ばれているかを正確に取得します。 C. で
andalso
/&&
のような多くの制御のためのorelse
、および||
見てエラーが、私は実行されたかを知る良い感じErlangで定義されており、それがどのように行ってきました。
1. 'andalso'と' orelse'も論理演算子として使用できます。私はタイプチェックについて少しは理解していませんでした。 3.何が呼び出されたかを知ることは、参考に透明な表現では問題ではない。それは副作用の文脈においてのみ関連している。 – missingfaktor
ロバートが言っていることは、述語の評価に必要ない場合でも例外を発生させるために、すべてのオペランドを評価することが時々必要になるということです。それは良い点です。 – dsmith
@dsmith:はい、両方とも、そしてそれらが実際にブール値を返すかどうかをチェックします。私はおそらく過度に慎重であるかもしれませんが、できるだけ早くエラーをキャッチすることは良いことです。 – rvirding
- 1. 「ヌル条件演算子短絡」とは何ですか?
- 2. 、短絡演算子
- 3. Java/Scalaの非短絡論理(ブール)演算子に適していますか?
- 4. 論理ORと短絡OR演算子の違いは何ですか?
- 5. Perlの(、、)と(||、&&)の短絡演算子の違いは何ですか?
- 6. bashには短絡しないブール値や演算子がありますか?
- 7. Pythonでブール演算子を使用するためのビット演算子のオーバーロード
- 8. ブール演算子とかっこ
- 9. で短絡演算子と末尾再帰
- 10. この演算子は何ですか:&=
- 11. この演算子は何ですか、 "??"
- 12. Cでのラムダ計算:ブール演算子とNOT演算子
- 13. PythonでAND演算子とNOT演算子を使用する
- 14. なぜビットワイズ&演算子は短絡していませんか?
- 15. ()=>演算子とは何ですか?
- 16. ##演算子とは何ですか?
- 17. フリップフロップ演算子とは何ですか?
- 18. 拡散演算子と非構造化演算子を使って不変オブジェクトを修正する最短の方法は何ですか
- 19. jade条件でブール演算子を使用する
- 20. ブール式で=>演算子を使用する
- 21. ifステートメントでブール演算子を使用する
- 22. このmysqlビューではsum演算子とは何ですか?
- 23. 違い:演算子の優先順位と短絡が
- 24. オーバーロードされた演算子&&と||の短絡C++ 17
- 25. 「短絡のない論理演算子は実際に短絡しないでしょうか?
- 26. Thymeleaf - ブール演算子
- 27. matlabブール演算子
- 28. 整数で「または」演算子を使用するとは何ですか
- 29. ブール演算子は、運動
- 30. ||演算子は、PHPで非ブール型の値の間で選択するために使用されますか?
これはPrologのErlangの起源と関係があると言われたので、「Logic Programming」とタグ付けされました。 – missingfaktor
関連:[ガードテストで 'andalso'に'と 'を好むべきときは(http://stackoverflow.com/questions/6025132/when-to-prefer-and-over-andalso-in-guard-tests)。 – kay