ISWIM
ISWIM
(language)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 currentcontinuation (the call/cc operator of Scheme is asimplified version). Being based on lambda calculus ISWIM hadhigher order functions and lexically scoped variables.
The operational semantics of ISWIM are defined usingLandin's SECD machine and use call-by-value (eager evaluation). To make ISWIM look more like mathematicalnotation, Landin replaced ALGOL's semicolons and begin endblocks with the off-side rule and scoping based onindentation.
An ISWIM program is a single expression qualified by "where"clauses (auxiliary definitions including equations amongvariables), conditional expressions and function definitions.With CPL, ISWIM was one of the first programming languagesto use "where" clauses.
New data types could be defined as a (possibly recursive)sum of products like the algebraic data types found inmodern functional languages. ISWIM variables were probablydynamically typed but Landin may have planned some form oftype inference.
Concepts from ISWIM appear in Art Evan's PAL and JohnReynold's Gedanken, Milner's ML and purely functionallanguages with lazy evaluation like SASL, Miranda andHaskell.
["The Next 700 Programming Languages",P.J. Landin, CACM 9(3):157-166, Mar 1966].