Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Hope (programming language)

Hope is a programming language based on functional programming, developed in the 1970s at the University of Edinburgh. It predates Miranda and Haskell, and is contemporaneous with ML. Derived from NPL by Rod Burstall and John Darlington, Hope introduced call-by-pattern evaluation and algebraic data types. Named after Sir Thomas Hope, it relates to Edinburgh’s Hope Park Square, home to the artificial intelligence department where Hope was developed. Initially using strict evaluation, later versions implemented lazy evaluation. The successor, Hope+, was developed at Imperial College with International Computers Limited.

We don't have any images related to Hope (programming language) yet.
We don't have any YouTube videos related to Hope (programming language) yet.
We don't have any PDF documents related to Hope (programming language) yet.
We don't have any Books related to Hope (programming language) yet.
We don't have any archived web articles related to Hope (programming language) yet.

Language details

A factorial program in Hope is:

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

Changing the order of clauses does not change the meaning of the program, because Hope's pattern matching always favors more specific patterns over less specific ones. Explicit declarations of data types in Hope are required; there is no type inference algorithm.

Hope provides two built-in data structures: tuples and lists.7

Implementations

Roger Bailey's Hope tutorial in the August 1985 issue of Byte references an interpreter for IBM PC DOS 2.0.8 British Telecom embarked on a project with Imperial College London to implement a version of Hope. The first release was coded by Thanos Vassilakis in 1986. Further releases were coded by Mark Tasng of British Telecom.

References

  1. Burstall, R. M.; MacQueen, D. B.; Sannella, D. T. (1980). "Hope: An Experimental Applicative Language". Proc. 1980 LISP Conference (PDF). Stanford University, Stanford, California, United States. p. 136–143.{{cite book}}: CS1 maint: location missing publisher (link) /wiki/Rod_Burstall

  2. Bailey, Roger (1 April 1990). Functional Programming with Hope. Ellis Horwood Series in Computers and Their Applications. Ellis Horwood Ltd.

  3. Burstall, R. M. (1977). Design considerations for a functional programming language (invited paper). Proceedings Infotech State of the Art Conference "The Software Revolution". Copenhagen. pp. 45–57. /wiki/Rod_Burstall

  4. Burstall, R. M.; Darlington, J. (1977). "A transformation system for developing recursive programs". Journal of the Association for Computing Machinery. 24 (1): 44–67. /wiki/Rod_Burstall

  5. Hudak, Paul; Hughes, John; Peyton Jones, Simon; Wadler, Philip (2007-06-09). A history of Haskell: being lazy with class. ACM. pp. 12–1. doi:10.1145/1238844.1238856. ISBN 9781595937667. S2CID 52847907. 9781595937667

  6. Kewley, John; Glynn, Kevin (1989). "Evaluation Annotations for Hope+". In Davis, Kei; Hughes, R. J. M. (eds.). Functional Programming: Proceedings of the 1989 Glasgow Workshop, Workshops in Computing. London, United Kingdom: Springer-Verlag (published 1990). pp. 329–337. /wiki/Springer-Verlag

  7. Bailey, Roger (August 1985). "A Hope Tutorial". Byte. Vol. 10, no. 8. p. 235–258. Retrieved 13 January 2025. https://archive.org/stream/BYTE_Vol_10-08_1985-08_The_Amiga#page/n241/mode/2up

  8. Bailey, Roger (August 1985). "A Hope Tutorial". Byte. Vol. 10, no. 8. p. 235–258. Retrieved 13 January 2025. https://archive.org/stream/BYTE_Vol_10-08_1985-08_The_Amiga#page/n241/mode/2up