画像引用元: rlv.zcache.comISWIM
ISWIM は、Peter J. Landin が考案し、1966年の Communications of the ACM 誌で発表した The Next 700 Programming Languages で初めて明らかにした抽象プログラミング言語(あるいはプログラミング言語ファミリ)である。名称は \"If you See What I Mean\" の頭字語に由来する。実装されたことはないが、その後のプログラミング言語の開発に多大な影響を与えた。特に、SASL、Miranda、ML、Haskellといった関数型言語に影響を与えている。ISWIM は、ラムダ計算の関数型コアを命令型言語の糖衣構文で包んだものである。変更可能な変数と代入と強力な制御機構として Landin の J 演算子を追加してある(J演算子は継続を可能としたもので、Scheme の call/cc は J 演算子を簡略化したものである)。ラムダ計算に基づいており、高階関数と静的スコープの変数を備えている。ISWIM の操作的意味論は Landin のSECDマシンを使って定義されており、先行評価(eager evaluation)による値渡しを使っている。ISWIM の目標は、より数学的記法に近づけることであったため、Landin は ALGOL の文の区切りであったセミコロンや <code>begin</code> と <code>end</code> によるブロックを排除し、オフサイドルールによって字下げでブロックを示すようにした。ISWIM で特徴的な記法として、節(clause)の利用がある。ISWIM プログラムは、'where' 節を使った1つの式(変数間の等式を含む補助的定義)、条件付きの式、関数定義からなる。ISWIM は、CPLと共に最初に 'where' 節を使ったプログラミング言語の1つであった。意味論的特徴としては、既存のデータ型を組み合わせて(場合によっては再帰的に)新たなデータ型を定義可能であったことが挙げられる。これはやや冗長な自然言語的なスタイルであったが、最近の関数型言語にある代数的データ型と同じものである。ISWIM では、変数の型は明示的に宣言されず、Landin は(1966年の論文では明記していないが)動的型付けのようなものを想定していたと思われる(ALGOLよりもむしろLISPに近い)
