Hope (programming language)

This is an old revision of this page, as edited by Neilc (talk | contribs) at 04:48, 15 July 2005 (dab haskell). 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, with strong polymorphic typing, algebraic datatypes, pattern matching, and higher-order functions. It has call-by-pattern evaluation. The first implementation of Hope was strict, but since that one there have been lazy versions and strict versions with lazy constructors. Hope is purely functional.

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.