Gofer version 2.30a Mon Jun 23 12:00:00 1994 ------------------------------------------------------------------------------ This directory contains the source code, documentation and demonstrations for Gofer version 2.30a, 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.30a: 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, overloaded numeric constants, default declarations, derived instances. ------------------------------------------------------------------------------ This directory contains the following files: README This file -- you're already reading it! gofer230a.tar.gz Standard Gofer distribution in gzipped, tar format. This file includes all documentation, source code and demo programs. gofer230a.zip Standard Gofer distribution in zip format. This include the same files as gofer230a.tar.gz. The following files will only be of interest to PC (i.e. DOS) users. README.PC A copy of the readme file in pcgof230.zip. pcgof230.zip Executable versions of Gofer 2.30a for use on standard PCs. These files were compiled with Borland C 3.1. Please ensure that you have read and understood the README.PC file included with this ZIP archive before using these programs. You will still need the prelude files and demonstration files from the main Gofer distribution. 386gofer.zip Executable and additional source for a 386 version of Gofer 2.30a, 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. You will still need the other files from the main Gofer distribution. calvin22.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 pcgof228.zip versions of Gofer 2.23, and Gofer 2.28. These are provided just in case anyone wants to use Gofer on an old PC without enough memory to support 2.30a. 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.gz 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 .gz should be unpacked using the gunzip utility: gunzip -v FILE.gz Files ending with .zip should be unpacked using the unzip utility: unzip FILE.zip If you are unpacking the gofer230.zip file on a PC, add the -a flag to ensure proper conversion of text files: unzip -a gofer230.zip Don't forget that any files with names ending in ".gz", ".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 Until mid-July 1994: jones-mark@cs.yale.edu From Sept/Oct 1994: mpj@cs.nott.ac.uk ------------------------------------------------------------------------------ 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. ------------------------------------------------------------------------------