Hope (programming language)
{{Infobox programming language
| name = Hope
| logo =
| logo caption =
| screenshot =
| screenshot caption =
| sampleCode =
| paradigm = functional
| family =
| designers = Rod Burstall
D. B. MacQueen
Don Sannella
| developer =University of Edinburgh
| released = {{Start date and age|1980}}
| latest release version =
| latest release date =
| typing =
| memory management =
| scope =
| programming language =
| discontinued = Yes
| platform =
| operating system =
| license =
| file ext =
| file format =
| website =
| implementations =
| dialects = Hope+
| influenced by = NPL
| influenced =
}}
Hope is a programming language based on functional programming developed in the 1970s at the University of Edinburgh.{{cite book |last1=Burstall |first1=R. M. |author1-link=Rod Burstall |last2=MacQueen |first2=D. B. |last3=Sannella |first3=D. T. |date=1980 |chapter=Hope: An Experimental Applicative Language |title=Proc. 1980 LISP Conference|place=Stanford University, Stanford, California, United States |page=136–143 |url=https://homepages.inf.ed.ac.uk/dts/pub/hope.pdf}}
{{cite book |last1=Bailey |first1=Roger |date=1 April 1990 |title=Functional Programming with Hope |series=Ellis Horwood Series in Computers and Their Applications |publisher=Ellis Horwood Ltd}}
It predates Miranda and Haskell and is contemporaneous with ML, also developed at the University. Hope was derived from NPL, a simple functional language developed by Rod Burstall and John Darlington in their work on program transformation.{{cite journal |last1=Burstall |first1=R. M. |author1-link=Rod Burstall |last2=Darlington |first2=J. |author2-link=John Darlington |date=1977 |title=A transformation system for developing recursive programs |journal=Journal of the Association for Computing Machinery |volume=24 |issue=1 |pages=44–67}} NPL and Hope are notable for being the first languages with call-by-pattern evaluation and algebraic data types.{{Cite book |last1=Hudak |first1=Paul |author1-link=Paul Hudak |last2=Hughes |first2=John |author2-link=John Hughes (computer scientist) |last3=Peyton Jones |first3=Simon |author3-link=Simon Peyton Jones |last4=Wadler |first4=Philip |author4-link=Philip Wadler |date=2007-06-09 |title=A history of Haskell: being lazy with class |publisher=ACM |pages=12–1 |doi=10.1145/1238844.1238856 |isbn=9781595937667 |s2cid=52847907}}
Hope was named for Sir Thomas Hope (c. 1681–1771), a Scottish agriculture reformer, after whom Hope Park Square in Edinburgh, the location of the artificial intelligence department at the time of the development of Hope, was also named.
The first implementation of Hope used strict evaluation, but there have since been lazy evaluation versions and strict versions with lazy constructors. A successor language Hope+, developed jointly between Imperial College and International Computers Limited, added annotations to dictate either strict or lazy evaluation.{{cite book |last1=Kewley |first1=John |last2=Glynn |first2=Kevin |date=1989 |chapter=Evaluation Annotations for Hope+ |editor1-last=Davis |editor1-first=Kei |editor2-last=Hughes |editor2-first=R. J. M. |title=Functional Programming: Proceedings of the 1989 Glasgow Workshop, Workshops in Computing |pages=329–337 |place=London, United Kingdom |publication-date=1990 |publisher=Springer-Verlag}}
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.
Implementations
Roger Bailey's Hope tutorial in the August 1985 issue of Byte references an interpreter for IBM PC DOS 2.0. 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
External links
- [https://web.archive.org/web/20130801064002/http://www.hopemachine.co.uk/ Hope Interpreter for Windows]
- [http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_key=Hope Entry in the online Dictionary of Programming Languages]
{{Authority control}}
{{DEFAULTSORT:Hope (Programming Language)}}
Category:Academic programming languages
Category:History of computing in the United Kingdom
Category:Statically typed programming languages