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

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

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

datatype bool = false | true

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

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

  • 論理積: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