CS 613: Design and Implementation of Functional Programming Languages

Instructor : Amitabha Sanyal

That's me, in xfig


Last updated on: 7th March 2007.

Schedule for the semester




Introduction

Welcome to the course on Functional Programming Languages. I shall use this page to:

Course Contents



Grading



Annotated References

The first two references are for motivation. The first paper reports an experiment to evaluate different programming languages for ease in prototyping. The paper discusses why Haskell rated way above most other languages. The second paper shows how the two distinctive features of functional programming languages, namely higher order functions and lazy evaluation, play important roles as powerful combining aids or glues in the development of software.

The next paper is a guided tour of Haskell. But be warned that the material is not as gentle as it sounds. This is the language manual, the final arbiter. The next reference is probably the best introductory text on functional programming.
Lambda calculus plays important roles in Functional Programming. Apart from serving as a model of computation it is also used as an intermediate representation in the implementation of functional programming languages. The text by Barendregt is a comprehensive text on lambda calculus.

Haskell is a type-rich language. The references on type systems and type inferencing are:

The next few references are on implementation of functional programming languages. As you will learn, because of the large semantic gap between a language like Haskell and a real machine, the compilation process is divided into two steps. In the first, the functional program is translated into instructions of an abstract machine, which are then either interpreted or translated into instructions of a real machine. The first book uses G-machine as the abstract machine, the second paper introduces the Three Instruction Machine (TIM), and the third paper, the  state-of-art Spineless Tagless G-Machine.


There is a draft of a later book by Simon Peyton-Jones. You might want to use it as a reference.

This is a list of papers on assorted topics.
  • Philip Wadler How to declare an Imperative
  • Philip Wadler, The essence of functional programming.
  • Jeremy Gibbons, Calculating Functional Programs
  • Graham Hutton , A Tutorial on the Universality and Expressivenes of fold
  • General reading on Functional Programming