Gofer version 2.28                                Fri Feb 12 00:00:00 EST 1993
------------------------------------------------------------------------------
This directory contains the source code, documentation and demonstrations for
Gofer version 2.28, an interactive functional programming environment (i.e. an
interpreter!) supporting a language based on the Haskell report version 1.2
(recently published in ACM Sigplan notices).

The following features are included in Gofer 2.28:

  o  Lazy evaluation, higher order functions, pattern matching etc...

  o  Wide range of built-in types with provision for defining new free
     datatypes and type synonyms.

  o  Polymorphic type system with provision for overloading based on
     a system of type classes.

  o  Full Haskell 1.2 expression and pattern syntax including lambda,
     case, conditional and let expressions, list comprehensions, operator
     sections, and wildcard, as and irrefutable patterns.

  o  Partial implementation of Haskell 1.2 facilities for I/O, enabling
     the use of simple interactive programs and programs reading and writing
     text files.

  o  User documentation, sample programs and source code freely available.

  o  Supports constructor classes and overloaded monad comprehensions.

  o  Simple minded compiler/translator Gofer -> C with runtime system for
     generation of standalone applications.

  o  Runs (and originally developed) on PC compatible computers, but
     also works on Sun workstations.  Code should be portable to many
     other kinds of machine.

Gofer is intended as an experimental language, particularly where type classes
are involved.  Gofer extends the Haskell type class system in several ways:

  o  Type classes with multiple parameters are supported.

  o  Instances of type classes may be defined non-overlapping, but otherwise
     arbitrary types.

  o  Predicates in contexts may involve arbitrary type expressions, not just
     type variables as in Haskell.

  o  Basic approach to dictionary construction is different, based on the
     approach I described in a posting to the Haskell mailing list early in
     Feburary 1991.  The resulting system ensures that all dictionaries are
     constructed before evaluation begins, avoiding repeated construction
     and enabling the shared evaluation of overloaded constants in
     dictionaries.

The most significant features of Haskell not currently supported are:
modules, arrays, overloaded numeric constants, default declarations, derived
instances, contexts in datatype definitions.
------------------------------------------------------------------------------

This directory contains the following files:

 README           This file -- you're already reading it!

 gofer2.28.tar.Z  Source code for Gofer system.  You will need this (and a
                  C compiler) to produce a version of Gofer to run on your
                  machine.

 preludes.tar.Z   A small collection of prelude files for use with
                  Gofer 2.28.

 demos.tar.Z      Demonstration programs.

 docs.tar.Z       Documentation for the Gofer system.  ASCII formatted
                  text including main user guide and release notes for
                  versions 2.21 and 2.28.  Also include Jeroen Fokker's
                  LaTeX version of the original Gofer manual.

                  Please get a copy of this file and read (at least) the
                  file release.228...

 docsrc.tar.Z     Source for the ASCII version of the Gofer documentation.
                  Most users will not need this, but it is provided here
                  for the benefit of anyone that wants to prepare an
                  ASCII version for printing with a different page size.
                  Note that you will need a copy of docs.tar.Z even if
                  you also take a copy of this file; not all parts of the
                  documentation are included in docsrc.tar.Z.

The following files will only be of interest to PC (i.e. DOS) users:

 readme.pc        A copy of the readme file in pcgof228.zip.

 pcgof228.zip     A binary version of Gofer 2.28 for use on standard PCs.
                  All the demonstration programs and preludes are included
                  in this file, so you won't need to fetch them separately.
                  This file contains everything you need to use Gofer on a
                  PC -- no C compiler is necessary.  Please ensure that you
                  have read and understood the README.PC file included with
                  this ZIP archive before using these programs.

 386gofer.zip     Executable and additional source for a 386 version of
                  Gofer 2.28, compiled with DJGPP (GNU C for DOS).  If you
                  have a 386 or better PC, get this; it gives you the
                  chance to have a much bigger heap, faster execution and
                  32 bit integers.

 calvin21.zip     A small vi-like editor; my recommendation for use with
                  Gofer on an MSDOS PC.

 unz50p1.exe      The INFO-ZIP unzip utility in binary form.  You will need
                  this to unpack the .zip files above.  Just run the program
                  in an empty directory; it is a self extracting archive.
                  Make sure that you don't confuse the INFO-ZIP readme
                  with the Gofer readmes!

 pcgof223.zip     Executable and demonstration programs for the PC
                  version of Gofer 2.23.  This is provided just in case
                  anyone wants to use Gofer on an old PC without enough
                  memory to support 2.28.  If you haven't got enough for
                  2.28 then you probably can't run 2.23 either.  But just
                  in case ...

Files ending with .tar.Z should be unpacked (on a Unix machine) by creating
and changing to a new directory and typing:

                       zcat FILE.tar.Z | tar xvf -

where FILE.tar.Z is the appropriate file name.  Files ending in just .Z
should be unpacked using the uncompress utility:

                       uncompress -v FILE.Z

Don't forget that any files with names ending in ".Z", ".zip" or ".exe"
should be tranfered in binary mode.

------------------------------------------------------------------------------

Please do not hesitate to contact me if you have any problems with the files
in this directory, or questions, comments or suggestions about Gofer.

I hope that you will enjoy using Gofer!

Mark                                                    jones-mark@cs.yale.edu

------------------------------------------------------------------------------
Disclaimer: Gofer is supplied "as is" without express or implied warranty
and is subject to terms and conditions of use as set out in the documentation
and source code.
------------------------------------------------------------------------------
