ガード (プログラミング)
↑ ないし、真 (true) として扱われる値(言語により異なる)でなければならない
↑ Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM 18 (1975), 8: 453–457.
↑ 初出は1972年となっているが、何度か更新している。
頭部に書かれた式(条件式)を評価した真偽にもとづき、最初に真になった所の対応する本体を評価した値を全体の結果とする、というような記法はプログラミング言語以前に数学で使われており、Haskellのものなどは以下の歴史よりも、むしろ数学における記法をそのまま取り入れたものに近い。1960年の「Lispの論文」と呼ばれるRecursive Functions of Symbolic Expressions and Their Computation by Machine, Part I(マッカーシー)で導入された、
という記法もその一種と言え、その後のLispではS式による記法が一般的になったものの、それでもLispの、ifではなくcondによる条件式はこれに近い。
1963年のCPL(ストレイチー他)にも似たものが存在しており、最初の部分式に対するガードが記述され、その後にガードが偽であった場合の部分式が記述される。例えば以下のように記述される。
後半の部分式も条件付きの式として記述できる場合、以下のような記述が可能となる。
1966年のISWIM(Landin(en:Peter Landin))では既に else 節に相当する部分のない条件付き式があり、ガードと二者択一の概念が分離されている。