Hope (programming language)

This is an old revision of this page, as edited by Gwern (talk | contribs) at 05:36, 10 December 2006 (Robot-assisted disambiguation (you can help!): Haskell programming language). 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 developed in the early 1980s prior to Miranda and Haskell. It is notable for being the first language with call-by-pattern evaluation and algebraic data types. Although Hope is no longer used, it is an important language in the development of functional programming.

A Hope tutorial by Roger Bailey was featured in the August 1985 issue of Byte on declarative programming.

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.

Another way in which Hope differs from Haskell and ML, is that types in Hope are explicitly declared, rather than inferred by a type-inference algorithm.

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