Alonzo(ID:2158/alo001)Named for Alonzo Church John Ramsdell, Mitre Corp, 1994 Functional programming language for programming multicomputers Structures: Related languages
References: Extract: Design Goals Design Goals Alonzo was designed for programming multicomputers [AS88]. It was designed under the assumption that communication to and from the multicomputer is slow, so that communication is limited to streams of characters. Another design goal was to display a useful functional programming language in which both the syntax and the semantics are simple and regular, and the syntax closely reflects the semantics. This is in contrast with many new functional programming languages, such as Haskell [HW88], which were designed to be intuitively obvious to a programmer with a mathematical background at the risk of simplicity. An example of a useful feature of Alonzo syntax concerns the ease in which definitions may be introduced into expressions. All parenthesized expressions may begin with local definitions. A benefit of having simple syntax and semantics is that it was straightforward to implement a compiler for Alonzo in Alonzo. The language was designed to allow a simple embedding in the Scheme dialect of Lisp [RC86]. Many of the standard functions have been taken from Scheme along with much of Scheme's syntactic conventions. Even the form of this report was greatly influenced by the Scheme report [RC86]. There exists two implementations of Alonzo. A Scheme implementation was used to bootstrap an implementation built on a fast reduction machine written in ANSI C. An existing Alonzo compiler image for the C machine allows the use of Alonzo without a Scheme system. Both implementations use Turner's combinators [Tur79], however, both provide facilities for linking supercombinators [Hug82] or other optimized combinators. A major challenge in producing a successful parallel implementation of Alonzo will be finding an algorithm which discovers much of the potential opportunities for parallel reduction of Alonzo expressions. If we limit ourselves to the reduction of expressions known to be needed, we require a strictness analysis of a @namicalty typed variant of the untyped A-calculus. One approach to such a task is to type fragments of Alonzo programs, and use existing strictness analysis algorithms [BIIA86] limited to just these fragments. The interest in strictness analysis is one important reason Alonzo has a formal definition. DOI in SIGPLAN Notices 24(09) September 1989 view details |