An increasingly significant weakness of declarative programming is that
it lacks a design methodology. In this paper, we attempt to provide one
by showing how methodologies used to develop object-oriented programs
might also be used to develop functional ones. This involves mapping from
a restricted subset of the diagrammatic notation used with these
methodologies, the Unified Modeling Language (UML), to the standard lazy
functional programming language, Haskell. As an example, we develop a
small electronic mail system.