Hope (programming language)

This is an old revision of this page, as edited by James.hague (talk | contribs) at 18:30, 27 July 2006. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Hope is a small functional programming language, one developed prior to Miranda and Haskell. It is notable for being the first language with call-by-pattern evaluation and algebraic data typess. Although Hope is essentially no longer used, it is an important language in the development of functional programming.

The first implementation of Hope was strict, but since that one there have been lazy versions and strict versions with lazy constructors.

A factorial program in Hope is

dec fact : num -> num;
--- fact 0 <= 1;
--- fact n <= n*fact(n-1);

Unlike in Haskell, changing the order of the clauses would not change the meaning of the program, because Hope's pattern matching always favors more specific patterns over less specific ones.