1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
------------------------------------------------------------------------------
Gofer 2.28 is an interactive functional programming environment (i.e. an
interpreter) supporting a language based on the draft report for Haskell
version 1.2, including the following features:
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.
------------------------------------------------------------------------------
And just in case you wondered:
The name "Gofer" is not a trademark, registered or otherwise, and
you are free to mention this name in published material, public and
private correspondence, or other documents without restriction or
obligation.
------------------------------------------------------------------------------
|