The
compiler allows users of computer algebra to develop
programs in a context where multiple programming languages are employed.
The compiler translates programs written
in the
programming language [24][25]
to a low-level intermediate language,
Foam [26], from which it can generate stand-alone
programs, native object libraries to be linked with other
applications, or code to be read into closed environments.
In addition, Foam code may be directly executed using an interpreter
provided with the
compiler.
The
programming language provides support for
object-oriented and functional programming styles.
It is ``higher-order'' in the sense that both
types and functions are first class, and may be manipulated
in the same ways as any other values.
The primary considerations in the formulation of the language
have been generality, composibility, and efficiency.
The language has been designed to admit a number of
important optimizations, allowing compilation to machine code which
is in many instances of efficiency comparable to that produced by
a C or Fortran compiler.
The original motivation for
comes from the field of
computer algebra: to provide an improved extension language for
the Axiom computer algebra system [14].