Haskell is a functional programming language with a strong notion of type (like ML, and unlike the family of languages based on Lisp). Haskell differs from ML in the strategy it uses for evaluating functional expressions--as we shall see, Haskell uses an ``outside-in'', ``lazy'' approach while ML uses an ``inside-out'', ``eager'' approach.