School of Computer Science and Engineering
The University of New South Wales
Sydney NSW 2052 Australia
Seminar room of the RCIS, 3. floor
We present a higher-order functional language in which variables define arbitrary-dimensional entities, where any atomic value may be used as a dimension, and a multidimensional runtime context is used to index the variables. We give an intuitive presentation of the language, present the denotational semantics, and demonstrate how function applications over these potentially infinite data structures can be transformed into manipulations of the runtime context. There are two kinds of functional abstraction and application: call-by-value (eager evaluation) is used to pass dimensions and constants, while call-by-name (lazy evaluation) is used for passing multidimensional variables.
The multidimensional space can be used for both programming and implementation purposes. At the programming level, the informal presentation of the language gives many examples showing the utility of describing common computing entities as infinite multidimensional data structures.
At the implementation level, the main technical part of the talk demonstrates that the higher-order functions over infinite data structures - even ones that are currieed - can be statically transformed into equivalent functions directly manipulating the context, thereby avoiding the need for closures over parts of the environment.