Edinburgh Research Explorer

HOPE: An Experimental Applicative Language

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

Related Edinburgh Organisations

Original languageEnglish
Title of host publicationLFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Number of pages8
Publication statusPublished - 1980


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.

ID: 5616863