ガード (プログラミング)
ガードのような機能を持つ言語として、Haskell、Clean、Erlang、occam、OCamlといったプログラミング言語や多くの並行論理プログラミング言語が挙げられる。Mathematicaではガードをconstraintと呼ぶ。形式手法の言語であるGuarded Command Language(詳細は歴史の節で後述)でも重要な構成要素である。
ISWIM では、どの分岐も真でない場合、全体として式の値は「未定義」とされ、値が計算されないと定義されていた。
プログラミング言語というよりは理論寄りで提案されたものだが、1975年のGuarded Command Language(ダイクストラ、EWD472)もガードを多用する言語である。文献から引用すると、たとえば、xとyの最大値をmに求める記述はifとガードを使って、
となる。さらに、繰返し評価を行うdoは次のような記法で、
いずれかの条件が成立する限り繰り返す(ifの場合と違い、doでは複数の条件が成立した場合はいずれかが選ばれる)。
1976年のSASL(en:SASL (programming language), en:David Turner (computer scientist))は「ガード」という用語を使った初期のプログラミング言語の1つであり、関数の定義を複数持たせて、ガードによって適用する定義を選択するようになっていた。これは細かい表面上の違いを除けば、後のHaskellにおける記法のガードの位置を後ろにもってきたようなものであり、あるいはHaskellのそれ以上に数学における記法に似ている。
1980年代のGuarded Horn Clauses(上田)もガードを多用する言語である。