Two Dozen Short Lessons in Haskell
Rex Page

A PDF version of Two Dozen Short Lessons in Haskell is contained in a file named twoDznQ.pdf. The reverse sides of some pages, which reveal the information intentionally omitted from the front sides, are contained in the file twoDznA.pdf. Both files are contained in, which may be accessed through the following link.

To assemble the text, print both files and merge the pages numbered 5A, 6A, ... (from the Answer Pages file) behind the pages numbered 5Q, 6Q, ... (from the other file), so that 5A follows 5Q, 6A follows 6Q, and so on. Then copy the pages to sheets printed front/back, and place them in a spiral binding or a ring binder. Note that the numbering of the answer pages does not begin at 1 because the front matter, appendix, and index are in the question pages only. Take this into account when merging the two bundles.

Two Dozen Short Lessons in Haskell calls for active participation from readers by omitting material at certain points and asking the reader to attempt to fill in the missing information based on knowledge they have already acquired. The missing information is then supplied on the reverse side of the page.

The text introduces important, basic notions of functional programming in the context of applications areas central to computer science (text processing, information representation, computer graphics, sorting, artificial intelligence). It emphasizes the use of modules to encapsulate functions and abstract data types, and it focusses on common patterns of computation (function composition, iteration, element-by-element operations on sequences, element-combining reductions of seqeunces).

The Lessons explain concepts, language features, and programming methods in terms accessible to people with the usual mathematical background of entering college freshman. A background in programming is not required, but may speed up the process. The Lessons make no attempt to cover all aspects of Haskell. Only those operators needed in the examples presented are covered, and only a few, bare details of pattern matching and evaluation strategies are mentioned.

The text refers readers to the Haskell Report about function libraries and additional features of the language. While readers may not be equipped to grasp the deepest concepts in the Report, they will be able to glean information additional information about topics introduced in the text, such as instrinsic functions and operators, type classes, module embellishments, etc.

A4 Paper: There is probably some way to print the pdf files on A4 paper, but if you can't find a way, you can download the following PostScript files and edit the prolog in the PostScript files to change the definition of /FMAllowPaperSizeMismatch from false to true. That is, search for a line containing "/FMAllowPaperSizeMismatch". The line should also contain the tokens "false" and "def". Change "false" to "true" (no quote marks).

Copyright © 1997 by Rex Page

The copyright notice permits copying the document for non-commercial, educational purposes, provided the copyright notice is retained, but the author retains all other rights.
The author would appreciate receiving an email note ( from anyone who downloads the text.
Suggestions for improvements in the text will be gratefully received.

CS 1323 Section 30 - Fundamentals of Computer Programming - Spring 1997

Up to: Welcome Page ~~~ Up to: University of Oklahoma ~~~ Go to: Next Semester ~~~ Go to: Previous Semester