Monads

Jeff Newbern has written a tutorial on monads (a way to think about state in functional programming languages).