An Interface to LFPL Prototype Compiler by Robert Atkey
(frontend: uapl)
This frontend has been added to the compiler by Michal Konečnư and
corresponds to the typing described in the paper
Another Type System for In-Place Update
by David Aspinall and Martin Hofmann.
The input syntax is the same as for LFPL. Product types
(t1,t2)
are treated as cartesian products while the
implicit products in datatypes are treated as tensor products.
This frontend infers a so called usage aspect for each
argument of all the functions. In addition to the following three usage aspects
- 1 = the argument might be destroyed
- 2 = the argument is used read-only
- 3 = like 2 but the argument's heap region is not reused in the result
defined in the above paper, the compiler may use the following fourth aspect
- # = the argument is used unsafely, the program might fail to evaluate correctly
whose presence makes it possible for the compiler to produce a
valid annotation even for incorrect programs.
Type a program
or start with the
examples
(div23.uapl, insertsort.uapl)
:
Back to the main page of the compiler by Robert Atkey.
Other frontends available:
lfpl
,
deel
Other compilers available:
by Nick Brown
,
Borel
Back to the main project page.
Michal Konečnư
Last modified: Fri Feb 21 14:30:18 GMT 2003