Hope (programming language): Difference between revisions

Content deleted Content added
Implementations: another shot at organization
Dsannella (talk | contribs)
m Wikipedia cross reference to Don Sannella
 
(6 intermediate revisions by 2 users not shown)
Line 8:
| paradigm = [[Functional programming|functional]]
| family =
| designers = [[Rod Burstall]]<br>D. B. MacQueen<br>D. T.[[Don Sannella]]
| developer =[[University of Edinburgh]]
| released = {{Start date and age|1980}}
Line 30:
}}
 
'''Hope''' is a small [[programming language]] based on [[functional programming]] developed in the 1970s at the [[University of Edinburgh]].<ref name="BMS">{{cite book |last1=Burstall |first1=R. M. |author1-link=Rod Burstall |last2=MacQueen |first2=D. B. |last3=Sannella |first3=D. T. |date=1980 |titlechapter=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}}</ref><ref>
{{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}}</ref>
It predates [[Miranda (programming language)|Miranda]] and [[Haskell]] and is contemporaneous with [[ML (programming language)|ML]], also developed at the University. Hope was derived from [[NPL (programming language)|NPL]],<ref name="design"/> a simple functional language developed by [[Rod Burstall]] and [[John Darlington]] in their work on program transformation.<ref>{{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}}</ref> NPL and Hope are notable for being the first languages with call-by-pattern evaluation and [[algebraic data type]]s.<ref>{{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}}</ref>
 
Hope was named for [[Sir Thomas Hope, 8th Baronet|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.<ref name=annotations>{{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]]}}</ref>
 
==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 [[Declaration (computer programming)|declarations]] of [[data type]]s in Hope are required; there is no option to use a [[type inference]] algorithm in Hope.
 
Hope provides two built-in [[data structure]]s: [[tuple]]s and [[List (abstract data type)|lists]].<ref name=byte/>
Line 48 ⟶ 50:
==Implementations==
Roger Bailey's Hope tutorial in the August 1985 issue of ''[[Byte (magazine)|Byte]]'' references an [[Interpreter (computing)|interpreter]] for [[IBM PC DOS]] 2.0.<ref name=byte/> [[BT Group|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.
 
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.<ref name=annotations>{{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]]}}</ref>
 
==References==
Line 59:
==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 for Hope in the online Dictionary of Programming Languages]
 
{{Authority control}}