Hope (programming language): Difference between revisions

Content deleted Content added
top: removed unsourced parenthetical
clean-up pass
Line 1:
'''Hope''' is a small [[functional programming language]] developed in the 1970s at the [[University of Edinburgh]].<ref name="BMS">[[Rod Burstall|Burstall R.M]], [[David MacQueen| MacQueen D.B]], Sannella D.T. (1980) ''Hope: An Experimental Applicative Language''. Conference Record of the 1980 LISP Conference, Stanford University, pp. 136-143.</ref><ref name="design"> R.M. Burstall. Design considerations for a functional programming language. Invited paper, Proc. Infotech State of the Art Conf. “The Software Revolution”, Copenhagen, 45–57 (1977)</ref><ref>
{{cite book
| title = Functional Programming with Hope
Line 7:
| publisher = Ellis Horwood Ltd
| publication-date = 1 April 1990
}}</ref><ref>
}}</ref> It predates [[Miranda programming language|Miranda]] and [[Haskell (programming language)|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> 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 [[Stephen Cole Kleene|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}} Hope is an important language in the development of functional programming.
{{cite magazine
| title = A Hope Tutorial
| last = Bailey
| first = Roger
| magazine = [[Byte magazine|Byte]]
| volume = 10
| issue = 8 (August 1985)
| url = http://www.devili.iki.fi/library/issue/136.en.html
| accessdate = 1 April 2015
}}</ref> It predates [[Miranda programming language|Miranda]] and [[Haskell (programming language)|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> 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 [[Stephen Cole Kleene|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}} Hope is an important language in the development of functional programming.
 
Hope was named for [[Sir Thomas Hope, 8th Baronet|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.
Line 27 ⟶ 18:
--- fact n <= n*fact(n-1);
 
Unlike [[Haskell (programming language)|Haskell]], changingChanging the order of the clauses does not change the meaning of the program, because Hope's pattern matching always favors more specific patterns over less specific ones. Another way in which Hope differs from Haskell and [[:Category:ML programming language family|ML]] is that explicitExplicit type declarations in Hope are required:; there is no option to use a type-inference algorithm in Hope.
 
Hope provides two built-in data structures: tuples and 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 London|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==
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 London|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 BTBritish Telecom.
 
Roger Bailey's Hope tutorial in the August 1985 issue of [[Byte (magazine)|BYTE]] references an interpreter for PC-DOS 2.0.<ref name=byte/>
 
==References==
{{Reflist}}|refs=
<ref name="design"> R.M. Burstall. Design considerations for a functional programming language. Invited paper, Proc. Infotech State of the Art Conf. “The Software Revolution”, Copenhagen, 45–57 (1977)</ref>
<ref name=byte>
{{cite magazine
| title = A Hope Tutorial
| last = Bailey
| first = Roger
| magazine = [[Byte magazine|Byte]]
| volume = 10
| issue = 8
| issuedate = 8 (August 1985)
| url = https://archive.org/stream/BYTE_Vol_10-08_1985-08_The_Amiga#page/n241/mode/2up
| accessdate = 1 April 2015
}}</ref>
}}
 
==External links==