Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Hope (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{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}} --> | typing = | memory management = | scope = | programming language = | discontinued = Yes | 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> {{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 [[type inference]] algorithm. Hope provides two built-in [[data structure]]s: [[tuple]]s and [[List (abstract data type)|lists]].<ref name=byte/> ==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. ==References== {{Reflist|refs= <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]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Reflist
(
edit
)