In many programming languages, especially those with a "functional" style of programming, the vast majority of objects are not modified after they are created. The ML language is unusual in that the compile-time typechecker can distinguish in advance objects that may be modified from objects that may not. This advance information about immutability can be used by implementations in several ways: by optimizing compilers, where it simplifies aliasing calculations; by garbage collectors, where it can improve locality of reference; by parallelizing compilers, where it simplifies sharing of data; and by debuggers, where it allows efficient replay of program execution. Since ML is one of the few imperative languages that provides compile-time guarantees of immutability, there has not been much research into the uses of immutability. There are many ways that compile-time guarantees can be translated into run-time savings; several of these will be studied.

Project Start
Project End
Budget Start
1990-07-15
Budget End
1992-12-31
Support Year
Fiscal Year
1990
Total Cost
$174,618
Indirect Cost
Name
Princeton University
Department
Type
DUNS #
City
Princeton
State
NJ
Country
United States
Zip Code
08540