プログラミング言語SML#解説 3.7.1版
19 式

19.13 論理演算式 ⟨exp1⟩ andalso ⟨exp2⟩ および ⟨exp1⟩ orelse ⟨exp2⟩

真理値型は以下のように予め定義されている.

datatype bool = false | true

通常データ構成子は大文字で始まる習慣があるが,falseとtrue は例外である.

bool型を持つ2つの式⟨exp1⟩と⟨exp2⟩に対し て以下の構文が定義されている.

  • •

    論理積:⟨exp1⟩ andalso ⟨exp2⟩

    ⟨exp1⟩の値を評価し,その結果がtrueであれば, ⟨exp2⟩を評価し,その結果が式全体の結果となる. ⟨exp1⟩の値がfalseであれば,falseが式の値である. この場合,⟨exp2⟩は評価されない.

  • •

    論理和:⟨exp1⟩ orelse ⟨exp2⟩

    ⟨exp1⟩の値を評価し,その結果がfalseであれば, ⟨exp2⟩を評価し,その結果が式全体の結果となる. ⟨exp1⟩の値がtrueであれば,trueが式の値である. この場合,⟨exp2⟩は評価されない.

このような評価を実現するために,これら演算は関数ではなく構文とし て提供されている.

これら構文はいずれも左結合する. また,同一レベルの構文定義では,先に現れた構文の結合力は後に出現した構文より強い. 従って,

false andalso true orelse false

は(false andalso true) orelse falseと解釈され,評価結果の値はfalseとなる.

bool型の演算には,これら構文以外に関数が定義されている.

not : bool -> bool