Icon
Iconの中心的な特徴の1つは制御構造を真理値によるものから、成功か失敗によるものへと変更したことである。このモデルでは、
if a < b
のような単純な比較は多くの言語のように
「もし式全体が真と評価されるならば」
という意味ではなく、
「もし処理全体が成功ならば」
というような意味である。この場合は比較が成り立つなら、<演算子は成功する。よってIconとその他の言語で実行結果は同じとなる。この方式がより興味深いのは、
if a < b < c
のような場合である。<演算子は、比較が成り立つときは成功であると同時に、二番目の引数を値として返す。したがって、a < bの部分を評価して成功すれば、値としてbを返すので、つづいてb < cを評価することになる。当然、評価の時に一度でも失敗すれば、全体として失敗である。 このような比較は、ほとんどの言語ではこのまま記述することができないが、Iconでは可能である。
この方式の有用性がより明確になるのは、現実の例で考えたときである。Iconでは
は標準入力から標準出力へと1行をコピーする。この例はファイルが存在しないなどの理由でread()がエラーを発生したときでも正しく動作する。