Functional Programming: Abstract

Last updated 8.1.2001
Index  Courses held

Traditional programming languages conform to the general architecture of computer systems, with its provision of assignment to variables whose values change while the program is running. This means that programs written in these languages must specify exactly the order in which those changes occur. This style of programming is imperative, that is, it explicitely states the order in which events must occur.

An alternative is to consider languages which are declarative rather than imperative in style. That is, they dispense with variables and assignment of values to them so there is no longer any need to order changes to the values of variables. Declarative programs are constructed from expressions (functions) rather than ordered statements. Recursion is a strong element in functional languages. Another feature is that "values" of functions may may themselves be functions. Together with other features this makes functional languages very powerful so that considerable designs can be expressed in a few lines. This characteristic facilitates fast implementation of requirements and evaluation of functional characteristics which means that FP is well suited for software prototyping, see also [Huges 1989] and [www 1999].

The main topics are: FP principles with Scheme, and prototyping with me too. We will also to some extent describe SML. Scheme is a dialect of Lisp (List Programming) an untyped prefix notational language developed in the late 50s at MIT by John McCarty, SML (late 80s) is a typed infix notational language, and me too takes the form of an executable formal specfication language for describing and prototyping system designs at the early stage of develpment.

The student will learn and understand principles of functional programming and will be able to solve problems by using these.

(Lectures, Exercises, Course Paper, Examination).


Literature:
  1. Abelson, H and G.J. Sussman with J. Sussman: "Stucture and Interpretation of Computer Programs", MIT Press, Cambridge, Mass., 1985.
  2. Alexander, H. and V. Jones: Software Design and Prototyping Using me too, Prentice Hall, New York, 1990.
  3. Huges, J.: "Why Functional Programming Matters", Computer Journal 32,2, 1989, pp. 98-107.
  4. Myers, C., C. Clack and E. Poon: Programming with Standard ML, Prentice Hall, New York, 1993.
  5. Springer, G. and D.P. Friedman: Scheme and the Art of Programming, MIT Press, London, 1989.
  6. [www 1999] "About Haskell", http://www.haskell.org/aboutHaskell.html
  7. Hudak, P.: "The Haskell School of Expression: Learning Functional Programming through Multimedia", Cambridge University Press, 2000.