HOPE(ID:810/hop001)
- Country: uk
- Began: 1978
- Published: 1978
Named for Hope Park Square, where Edinburgh's Computer Science Department was (but also for Higher Order Parameters and "springs eternal" and so forth.)
R.M. Burstall and Don Sanella , U Edinburgh and Dave McQueen, Bell Labs 1978.
Functional language with polymorphic types and lazy lists. First language to use call-by-pattern. a small polymorphically-typed functional language. First language to use call-by-pattern. HOPE was originally strict, but there are versions with lazy lists, or with lazy constructors but strict functions.
Places
People:
Structures:
Related languages
NPL |
=> |
HOPE | |
Successor |
HOPE |
=> |
FP/M | |
Target language for |
HOPE |
=> |
Hope+ | |
Extension of |
HOPE |
=> |
SML | |
Derivation of |
References:
Burstall , R. M.; Darlington, John "A Transformation System for Developing Recursive Programs" p44-67 view details
Abstract: A system of rules for transforming programs is described, with the programs in the form of recursion equations. An initially very simple, lucid, and hopefully correct program is transformed into a more efficient one by altering the recursion structure. Illustrative examples of program transformations are given, and a tentative implementation is described. Alternative structures for programs are shown, and a possible initial phase for an automatic or semiautomatic program-manipulation system is indicated.
in [ACM] JACM 24(1) Jan 1977 view details
Burstall, R.M. "Design Considerations for a Functional Programming Language" view details
in Infotech State of the Art Conference: The Software Revolution, Copenhagen, October, 1977. view details
Burstall, R.M. and Sannella, D.T. HOPE User's Manual. In preparation.
view details
in Infotech State of the Art Conference: The Software Revolution, Copenhagen, October, 1977. view details
Burstall R.M., MacQueen D.B. and Sannella D, T. "HOPE: An experimental Applicative Language" Internal Report CSR-62-80 (Updated Feb. 1981). Department of Computing Science. University of Edinburgh. view details
in Infotech State of the Art Conference: The Software Revolution, Copenhagen, October, 1977. view details
Burstall, R.M. et al, "HOPE, an Experimental Applicative Language" pp136-143 view details
Abstract: An applicative language called HOPE is described and discussed. The underlying goal of the design and implementation effort was to produce a very simple programming language which encourages the construction of clear and manipulable programs. HOPE does not include an assignment statement; this is felt to be an important simplification. The user may freely define his own data types, without the need to devise a complicated encoding in terms of low-level types. The language is very strongly typed, and as implemented it incorporates a typechecker which handles polymorphic types and overloaded operators. Functions are defined by a set of recursion equations; the left-hand side of each equation includes a pattern used to determine which equation to use for a given argument. The availability of arbitrary higher-order types allows functions to be defined which 'package' recursion. Lazily-evaluated lists are provided, allowing the use of infinite lists which could be used to provide interactive input/output and concurrency. HOPE also includes a simple modularisation facility which may be used to protect the implementation of an abstract data type.
Extract: HOPE 3. THE HOPE PROGRAMMING LANGUAGE A programming language called HOPE which illustrates the features mentioned above has been designed and implemented at Edinburgh University. A brief informal description of HOPE follows; full details can be found in [9]. A precursor, NPL, was described in [5]. The aim throughout was to design a programming language which was very simple and encouraged clarity and manipulability of programs. Major influences in the design of HOPE have been LISP and Landin's ISWIM [24]. We were not trying to be original; we sought a judicious selection of wellunderstood ideas. HOPE seeks some blend of LISP power with the discipline of strong typing and modularity. It bears some resemblance to a number of other languages, including PROLOG [30], ML [17], SASL [28], OBJ [15], SCRATCHPAD [22], and languages by Burge [4] and Backus [2]. HOPE (in its present form) is an experiment in language design and a means of testing certain ideas in programming methodology rather than the ultimate in programming languages. It is still somewhat incomplete and lacks such conveniences as sensible input/output facilities (but see section 3.5). Part of the HOPE implementation was carried out by Michael Levy and we express our appreciation of his efforts.
in [ACM] Proceedings of the 1980 ACM Conference on LISP and functional programming 1980, Stanford University view details
Eisenbach S. HOPE SWURCC Micro Software Quarterly Issue 5 Nov 1981. University of Bath Computer Center. view details
in [ACM] Proceedings of the 1980 ACM Conference on LISP and functional programming 1980, Stanford University view details
Moor, Ian W. "An applicative compiler for a parallel machine" view details
Abstract: A compiler for the applicative language HOPE is described. The compiler is itself written in HOPE and generates a machine independent compiler target language, suitable for execution on the parallel reduction machine ALICE. The advantages of writing a compiler in a very high level applicative language are discussed, and the use of program transformation and other techniques to turn the initial 'runnable specification' into a more efficient (if less clear) program are outlined. Extensions to the HOPE language and the compiler which can exploit the parallelism and various execution modes of ALICE are described.
in SIGPLAN Notices 17(06) June 1982 Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, Boston, Massachusetts, June 23-25, 1982 view details
Wu W.H. Using the Imperial College HOPE interpreter. Internal Report. Department of Computing, Imperial College, 1982. view details
in SIGPLAN Notices 17(06) June 1982 Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, Boston, Massachusetts, June 23-25, 1982 view details
Harland, David M. "Polymorphic Programming Languages", Ellis Horwood 1984. view details
in SIGPLAN Notices 17(06) June 1982 Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, Boston, Massachusetts, June 23-25, 1982 view details
Bailey, R. "A HOPE Tutorial" view details
pdf
in BYTE August 1985 view details
Eisenbach, S.; McLoughlin, L.; Sadler, C. "Data-flow design as a visual programming language" Proceedings of the 5th International Workshop on Software Specifications & Design Pittsburgh, Pennsylvania, United States 1989 pp281-283
view details
Abstract: Data-flow design techniques and the functional programming style both decompose problems in a data-driven fashion. We propose a method based on data-flow diagrams which yields designs which can be mechanically translated into code written in a functional programming language. Users who specify or design systems with data-flow techniques can effectively execute their specifications or designs with a minimum of additional design decisions and without recourse to a programming language. Data-flow diagram elements behave as programming constructs in a ?visual pmgramming? language. The paper solves a single problem to illustrate the methodology and show the kind of code produced.
DOI
in BYTE August 1985 view details
Bailey, R. "Functional Programming with Hope", Ellis Horwood 1990. view details
in BYTE August 1985 view details
Resources - PC Hope
"
- Hope home page
Hope is a small functional programming language, with polymorphic typing, algebraic types, pattern matching and higher-order functions. The version here is a fully lazy interpreter.
- A Hope tutorial by Roger Bailey (also available in DVI, PostScript and PDF formats). - A Hope interpreter - Reference (also available in DVI, PostScript and PDF formats). - Hope libraries. - A few Hope examples. (also available in DVI, PostScript and PDF formats). - C source code for the interpreter (distributed under the GNU General Public Licence). external link
|