HOPE: An Experimental Applicative Language

Rod M. Burstall, David B. MacQueen, Donald Sannella

Research output: Chapter in Book/Report/Conference proceedingConference contribution


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.
Original languageEnglish
Title of host publicationLFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Number of pages8
Publication statusPublished - 1980


Dive into the research topics of 'HOPE: An Experimental Applicative Language'. Together they form a unique fingerprint.

Cite this