Camelot and Grail: resource-aware functional programming for the JVM

We describe the functional language Camelot, which is a language of the ML family with extensions for explicit management of heap storage, and the intermediate language Grail, which is a functional form of JVM bytecode. A scheme for transforming Camelot into Grail is described. We also give some figures for execution times which show that Camelot programs perform reasonably well when compared with Java equivalents.

[1]  Christopher League,et al.  Functional Java Bytecode ∗ , 2001 .

[2]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[3]  Kenneth MacKenzie,et al.  Grail: a functional form for imperative mobile code , 2003, Electron. Notes Theor. Comput. Sci..

[4]  M. Hofmann A Type System for Bounded Space and Functional In-Place Update , 2000, Nord. J. Comput..

[5]  Kenneth MacKenzie,et al.  O'Camelot: adding objects to a resource-aware functional language , 2003, Trends in Functional Programming.

[6]  Martin Hofmann,et al.  Static prediction of heap space usage for first-order functional programs , 2003, POPL '03.

[7]  Steffen Jost Lfd_infer: an Implementation of a Static Inference on Heap Space Usage , 2004 .

[8]  Amr Sabry,et al.  The essence of compiling with continuations , 1993, PLDI '93.

[9]  G BakerHenry CONS should not CONS its arguments, part II , 1995 .

[10]  Peter Lee,et al.  No assembly required: compiling standard ML to C , 1992, LOPL.

[11]  Henry G. Baker,et al.  CONS should not CONS its arguments, part II: Cheney on the M.T.A. , 1995, SIGP.

[12]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[13]  Michal Konecný,et al.  Functional In-Place Update with Layered Datatype Sharing , 2003, TLCA.

[14]  Martin Hofmann,et al.  Another Type System for In-Place Update , 2002, ESOP.

[15]  John C. Reynolds Definitional Interpreters for Higher-Order Programming Languages , 1998, High. Order Symb. Comput..

[16]  Pierre Weis,et al.  Bigloo: A Portable and Optimizing Compiler for Strict Functional Languages , 1995, SAS.

[17]  Xavier Leroy,et al.  Bytecode verification on Java smart cards , 2002 .

[18]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[19]  Bill Venners,et al.  Inside the Java Virtual Machine , 1997 .

[20]  Michal Konecný Typing with Conditions and Guarantees for Functional In-place Update , 2002, TYPES.