Newsgroups: comp.lang.functional,comp.lang.prolog
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!hookup!usc!howland.reston.ans.net!plug.news.pipex.net!pipex!soap.news.pipex.net!pipex!edi.news.pipex.net!pipex!warwick!bsmail!miki!jwl
From: jwl@miki.cs.bris.ac.uk (John Lloyd)
Subject: Report on Escher
Message-ID: <DAH4M9.BGG@uns.bris.ac.uk>
Sender: jwl@miki (John Lloyd)
Nntp-Posting-Host: miki.cs.bris.ac.uk
Organization: Unviversity of Bristol, Dept of Computer Science
Date: Tue, 20 Jun 1995 13:39:45 GMT
Lines: 53
Xref: glinda.oz.cs.cmu.edu comp.lang.functional:6059 comp.lang.prolog:13329


The report "Declarative Programming in Escher", which is now available, may
be of interest to those working on integration of functional and logic
programming languages or those with a general interest in the design of
declarative programming languages.

To obtain it by ftp, go to:

ftp.cs.bris.ac.uk

and look at the README in /goedel/jwl_papers

Alternatively, if you want a hard copy, email me your hard mail address.

John Lloyd

***************************************************************************

From the preface:


Escher is a declarative, general-purpose programming language which integrates 
the best features of both functional and logic programming languages.
It has types and modules, higher-order and meta-programming facilities,
and declarative input/output.
Escher also has a collection of system modules, providing numerous operations
on standard data types such as integers, lists, characters, strings, sets,
and programs.
The main design aim is to combine in a practical and comprehensive way
the best ideas of existing functional and logic languages, such as G\"odel, 
Haskell, and $\lambda$Prolog.
Indeed, Escher goes well beyond G\"odel in its ability to allow function 
definitions, its higher-order facilities, its improved handling of sets, and 
its declarative input/output.
Escher also goes well beyond Haskell in its ability to run 
partly-instantiated predicate calls, a familiar feature of logic programming 
languages which provides a form of non-determinism, and its more flexible 
handling of equality.
The language also has a clean semantics, its underlying logic being (an 
extension of) Church's simple theory of types.

This report is divided into two parts.
The first part provides a tutorial introduction to Escher.
In this part there are many example programs to illustrate the various 
language features. 
In particular, these example programs are meant to emphasize the significant
practical advantages that come from integrating the best features of
existing functional and logic languages.
The second part contains a formal definition of the Escher language,
including its syntax, semantics, and a description of its system modules.
To make the report self-contained, an appendix summarizes the key aspects of 
the simple theory of types. 

