CS 342 Lecture -*- Outline -*- * Introduction to Scheme, a dialect of LISP why studying Scheme: want to understand the functional paradigm ** LISP vs. Functional programming -LISP has imperative featues (assignment, mutation) -but LISP does provide direct support for functional programming ** History 1920s Schoenfinkel develops theory of functions based on combinators 1930s Church develops lambda-calculus theory of functions Kleene shows that lambda-calculus is a universal computing system 1957 FLPL system based on FORTRAN used for AI (list-processing) if-expressions 1958 McCarthy starts LISP implementation, based on recursion, if-expressions, list primitives 1960 McCarthy publishes universal LISP function (interpreter) made into interpreter on IBM 704 (LISP 1.5) 1975 Steele and Sussman describe lexically scoped dialect: Scheme 1978 Steele writes Scheme compiler (his *master's* thesis) 1984 Common Lisp standard (statically scoped, modules, etc.) ** Scheme is a Dialect of LISP LISP 1.5 (original), MacLisp, ... had dynamic binding CommonLisp is statically scoped All of the above are *large* Scheme, statically scoped, focuses on small, cleaner language LISP usually mean Common Lisp (as in text) all have much in common, differ mainly in names of functions