from
The Free On-line Dictionary of Computing (8 July 2008)
ISWIM
<language> (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} based
framework.
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} (the {call/cc} 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} ({eager
evaluation}). 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}, {Miranda} and
{Haskell}.
["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].
(2007-03-20)