Report on the FX-91 Programming Language
David K. Gifford, Pierre Jouvelot, Mark A. Sheldon, and James
W. O'Toole
MIT/LCS/TR-531, February 1992
This report gives a defining description of the programming
language FX. The FX programming language is designed to support
the parallel implementation of applications that perform both
symbolic and scientific computations. The unique features of FX
include:
- An effect system, to discover expression scheduling constraints.
An effect is a static description of the side-effects an expression
may perform when it is evaluated. Just as a type describes what
an expression computes, an effect describes how an expression
computes.
- Abstraction over any kind of description, thus permitting
first-class type and effect polymorphism. Effect polymorphism
makes the FX effect system more powerful than previous approaches
to side-effect analysis in the presence of first-class subroutines.
- Type and effect inference, so that declaration free programs
can be statically type and effect checked. FX also permits explicitly
typed programs, and programs that use explicit types only for
first-class polymorphic values and modules.
- First-class modules, which permit FX to serve as its own
configuration language. It also includes an architecture independent
module of parallel vector operators.
- The introduction offers a summary of and motivation for the
unique properties of FX.
- Chapter 1 presents the fundamental ideas of the language
and describes the notational conventions used for describing
the language and for writing programs in the language.
- Chapter 2 describes the FX Kernel. The FX Kernel includes
essential constructs and the type and effect system.
- Chapter 3 introduces built-in data types and operations,
which include all of the language's data manipulation and input-output
primitives.

You can download the full text of this paper by selecting the
appropriate icon: