This is the homepage for CS 254: Introduction to Functional Programming, a course offered by Fritz Ruehr at the Computer Science Department of Willamette University.
This course provides a broad introduction to programming in the functional style, including motivations, history, programming techniques and theory. Functional programming provides concise and elegant solutions to many problems, using an approach based on mathematics, logic and proof. The course will be taught in Haskell, a powerful, modern programming language which can be used for both mathematical investigations and serious system development. Topics covered will include a broad introduction to computing, symbolic representation of data, list manipulation, recursion, algebraic data types, higher-order functions and type systems. The study of functional programming languages provides a useful foundation and perspective for further study of topics in algebra, logic, programming languages, computer science theory and linguistics.
plus
over the Nat
data type.
MyFile.hs
,
suitably annotated, for students who missed class due to the candidate lunch:
search for "HERE").
We will be using the Haskell programming language as our main implementation vehicle. There are plenty of links there about the language, how to use it and some implementations (check out the wiki in particular for programming advice).
ord
and chr
)On the Mac, you can either try to install the newer version of Hugs (but this requires DarwinPorts, which is little trickier) or you can install this previous version (which should be straightforward, although it may have some minor differences with the one in the lab):
Older (2002) version of Hugs
(Basically, if you are handy with Unix, or if you already have the Apple Developer Tools installed, you should at least try the newer DarwinPorts one; otherwise use the older, 2002 version.)
For a text editor on the Mac, I recommend the free program TextWrangler; you can also use TextEdit (already on your Mac for free), or vi/vim or emacs, if you know one of those.
On Windows, install the latest version of WinHugs and Crimson Editor (since this is what we use in lecture and lab) as follow:
Program Files
contains a space,
which can mess things up: I recommend just C:\Haskell
instead. (This should
create a directory C:\Haskell\Hugs
.)Properties
.Start In
: box to set the default directory.
In the lab, we use H:\
to default to the home drive
(you have to have the drive mapped for this to work).
Students setting this up on their own computers can select whatever directory they want to use.File:Options:WinHugs
, change the font size to 11 (or whatever you find legible);File:Options:WinHugs
, change the default editor option to: (note that there are spaces between the 2 words in the folder names and there is a space after the"C:\Program Files\Crimson Editor\cedt.exe /L:%d %s "
(just the stuff between the quotes, not the quotes themselves)
%s
!)Path
to include the path to the WinHugs folder.Tools:Preferences:General
: select "use spaces in place of tabs";Tools:Preferences:Files
: Deselect "load recent..."
(although students may want to leave this on their own computers);C:\Program Files]Crimson Editor\spec
folder:
haskell.spc
andhaskell.key
Here are a few fun, interesting or otherwise difficult to categorize links that came up in lecture at various points.
(Psst: click here for the segment stuff.)