Paradigm | imperative, functional |
---|---|
Designed by | Peter J. Landin |
First appeared | 1966 |
Influenced by | |
ALGOL 60, Lisp | |
Influenced | |
SASL, Miranda, ML, Haskell, Clean, Lucid |
ISWIM is an abstract computer programming language (or a family of programming languages) devised by Peter J. Landin and first described in his article The Next 700 Programming Languages, published in the Communications of the ACM in 1966. The acronym stands for "If you See What I Mean" (also said to have stood for "I See What You Mean", but ISWYM was mistyped as ISWIM).
Although not implemented, it has proved very influential in the development of programming languages, especially functional programming languages such as SASL, Miranda, ML, Haskell and their successors, and dataflow programming languages like Lucid.
ISWIM is an imperative language with a functional core, consisting of a syntactic sugaring of lambda calculus to which are added mutable variables and assignment and a powerful control mechanism—the J operator. Being based on lambda calculus ISWIM has higher order functions and lexically scoped variables.
The operational semantics of ISWIM are defined using Landin's SECD machine and use call-by-value, that is eager evaluation. A goal of ISWIM was to look more like mathematical notation, so Landin abandoned ALGOL's semicolons between statements and begin ... end
blocks and replaced them with the off-side rule and scoping based on indentation.