Jump to content

Hope (programming language): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Rescuing 1 sources, flagging 0 as dead, and archiving 0 sources. #IABot
Line 46: Line 46:
==External links==
==External links==
*[http://haskell.org/haskellwiki/History_of_Haskell History of Haskell] wiki.
*[http://haskell.org/haskellwiki/History_of_Haskell History of Haskell] wiki.
*[http://www.hopemachine.co.uk/ Hope Interpreter for Windows]{{dead link|date=April 2015}}
*[https://web.archive.org/20130801064002/http://www.hopemachine.co.uk/ Hope Interpreter for Windows]


{{DEFAULTSORT:Hope (Programming Language)}}
{{DEFAULTSORT:Hope (Programming Language)}}

Revision as of 14:11, 10 February 2016

Hope is a small functional programming language developed in the 1970s at Edinburgh University.[1][2][3][4][5] It predates Miranda and Haskell and is contemporaneous with ML (also developed at Edinburgh). Hope was derived from NPL, [2] a simple functional language developed by Burstall and Darlington in their work on program transformation.[6] NPL was, in turn, derived from Kleene Recursion Equations. NPL and Hope are notable for being the first languages with call-by-pattern evaluation and algebraic data types.[citation needed] SNOBOL is even older, and its 'patterns' may qualify as a hybrid between call-by-pattern and regular expression matching.[citation needed] Hope is an important language in the development of functional programming.

Hope was named for Sir Thomas Hope (c. 1681–1771), a Scottish agricultural reformer, after whom Hope Park Square in Edinburgh, the location of the Department of Artificial Intelligence at the time of the development of Hope, was also named.

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 explicit type declarations in Hope are required: there is no option to use a type-inference algorithm in Hope.

The first implementation of Hope was strict, but since that one there have been lazy versions and strict versions with lazy constructors (the language described in [1] has a lazy constructor for lists only).

References

  1. ^ a b Burstall R.M, MacQueen D.B, Sannella D.T. (1980) Hope: An Experimental Applicative Language. Conference Record of the 1980 LISP Conference, Stanford University, pp. 136-143.
  2. ^ a b R.M. Burstall. Design considerations for a functional programming language. Invited paper, Proc. Infotech State of the Art Conf. “The Software Revolution”, Copenhagen, 45–57 (1977)
  3. ^ Bailey, Roger (1 April 1990). Functional Programming with Hope. Ellis Horwood Series in Computers and Their Applications. Ellis Horwood Ltd.
  4. ^ Bailey, Roger. "A Hope Tutorial". Soi.city.ac.uk. Archived from the original on 10 September 2014. Retrieved 1 April 2015.
  5. ^ Bailey, Roger. "A Hope Tutorial". Byte. Vol. 10, no. 8 (August 1985). Retrieved 1 April 2015.
  6. ^ R.M. Burstall and J. Darlington. A transformation system for developing recursive programs. Journal of the Association for Computing Machinery, 24(1):44–67 (1977)