(If You See What I Mean) An influential but unimplemented computer programming language described in the article by Peter J. Landin cited below. Landin attempted to capture all known programming language concepts, including assignment
and control operators such as goto
and coroutines, within a single lambda calculus
ISWIM is an imperative language
with a functional core, consisting of sugared lambda calculus
plus mutable variables and assignment
. A powerful control mechanism, Landin's J operator, enables capture of the current continuation
operator of Scheme
is a simplified version). Being based on lambda calculus ISWIM had higher order functions and lexically scoped variables.
The operational semantics
of ISWIM are defined using Landin's SECD machine
and use call-by-value
). To make ISWIM look more like mathematical notation, Landin replaced ALGOL
's semicolons and begin end blocks with the off-side rule
and scoping based on indentation.
An ISWIM program is a single expression
qualified by "where" clauses (auxiliary definitions including equations among variables), conditional expressions and function definitions. With CPL
, ISWIM was one of the first programming languages to use "where" clauses.
New data types could be defined as a (possibly recursive) sum of products
like the algebraic data types found in modern functional languages. ISWIM variables were probably dynamically typed
but Landin may have planned some form of type inference
Concepts from ISWIM appear in Art Evan's PAL
and John Reynold's Gedanken
, Milner's ML
and purely functional languages with lazy evaluation like SASL
["The Next 700 Programming Languages" (http://www.cs.utah.edu/~wilson/compilers/old/papers/p157-landin.pdf), P.J. Landin, CACM 9(3):157-166, Mar 1966].