Content deleted Content added
No edit summary |
m Wikipedia cross reference to Don Sannella |
||
(43 intermediate revisions by 21 users not shown) | |||
Line 1:
{{Infobox programming language
| name = Hope
| logo = <!-- Filename -->
| logo caption =
| screenshot = <!-- Filename -->
| screenshot caption =
| sampleCode =
| paradigm = [[Functional programming|functional]]
| family =
| designers = [[Rod Burstall]]<br>D. B. MacQueen<br>[[Don Sannella]]
| developer =[[University of Edinburgh]]
| released = {{Start date and age|1980}}
| latest release version =
| latest release date = <!-- {{Start date and age|199y|mm|dd|df=yes}} -->
|
| memory management =
| scope =
| programming language =
| discontinued = Yes
}}</ref> It predates [[Miranda programming language|Miranda]] and [[Haskell (programming language)|Haskell]] and is contemporaneous with [[ML (programming language)|ML]] (also developed at Edinburgh). 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> 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)</ref> 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|date=February 2014}} (Though [[SNOBOL]] is even older, and its 'patterns' may qualify as a hybrid between call-by-pattern and regular expression matching.){{Citation needed|date=April 2013}} Hope is an important language in the development of functional programming.▼
| platform =
| operating system =
| license =
| file ext =
| file format = <!-- or: | file formats = -->
| website = <!-- {{URL|www.example.com}} -->
| implementations =
| dialects = Hope+
| influenced by = [[NPL (programming language)|NPL]]
| influenced =
}}
'''Hope''' is a [[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 |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}}</ref><ref>
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.▼
{{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>
▲
▲Hope was named for [[Sir Thomas Hope, 8th Baronet|Sir Thomas Hope]] (c. 1681–1771), a Scottish
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);
Hope provides two built-in [[data structure]]s: [[tuple]]s and [[List (abstract data type)|lists]].<ref name=byte/>
The first implementation of Hope was [[strict evaluation|strict]], but since that one there have been [[lazy evaluation|lazy]] versions and strict versions with lazy constructors (the language described in <ref name="BMS"/> has a lazy constructor for lists only). British Telecom embarked on a project with Imperial College to implement a strict version. The first release was coded by Thanos Vassilakis in 1986. Further releases were coded by Mark Tasng of BT.▼
==Implementations==
▲
==References==
{{Reflist
<ref name="design">{{cite conference |last1=Burstall |first1=R. M. |author1-link=Rod Burstall |date=1977 |title=Design considerations for a functional programming language (invited paper) |conference=Proceedings Infotech State of the Art Conference "The Software Revolution" |place=Copenhagen |pages=45–57}}</ref>
<ref name=byte>{{cite magazine |last1=Bailey |first1=Roger |date=August 1985 |url=https://archive.org/stream/BYTE_Vol_10-08_1985-08_The_Amiga#page/n241/mode/2up |title=A Hope Tutorial |magazine=[[Byte (magazine)|Byte]] |volume=10 |issue=8 |page=235–258 |access-date=13 January 2025}}</ref>
}}
==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:Functional languages]]
[[Category:Academic programming languages]]
[[Category:History of computing in the United Kingdom]]
[[Category:Statically typed programming languages]]
[[Category:University of Edinburgh]]
<!-- Hidden categories below -->
[[Category:Articles with example code]]
|