Learn More
We present a notion of η-long β-normal term for the typed lambda calculus with sums and prove, using Grothendieck logical relations, that every term is equivalent to one in normal form. Based on this development we give the first type-directed partial evaluator that constructs %able to construct normal forms of terms in this calculus.
Tarski asked whether the arithmetic identities taught in high school are complete for showing all arithmetic equations valid for the natural numbers. The answer to this question for the language of arithmetic expressions using a constant for the number one and the operations of product and exponentiation is affirmative, and the complete equational theory(More)
The evolution of Web sites towards very dynamic applications makes it necessary to reconsider current Web programming technologies. We believe that Web development would benefit greatly from more abstract paradigms and that a more semantical approach would result in huge gains in expressiveness. In particular, functional programming provides a really(More)
Eliom is a dialect of OCaml for Web programming in which server and client pieces of code can be mixed in the same file using syntactic annotations. This allows to build a whole application as a single distributed program, in which it is possible to define in a composable way reusable widgets with both server and client behaviors. Our language also enables(More)
This paper presents a normalization tool for the λ-calculus with sum types, based on the technique of normal-ization by evaluation, and more precisely techniques developed by Olivier Danvy for partial evaluation, using control operators. The main characteristic of this work is that it produces a result in a canonical form. That is to say: two βη-equivalent(More)
SUMMARY We present the design and implementation of a compiler from OCaml bytecode to JavaScript. The compiler first translate the bytecode into an SSA intermediate representation on which optimizations are performed, before generating JavaScript. We believe that taking bytecode as input instead of a high-level language is a sensible choice. Virtual(More)
We investigate the synergy between type-directed partial evaluation and run-time code generation for the Caml dialect of ML. Type-directed partial evaluation maps simply typed, closed Caml values to a representation of their long βη-normal form. Caml uses a virtual machine and has the capability to load byte code at run time. Representing the long βη-normal(More)
Ocsigen is a framework for programming highly dynamic web sites in Objective Caml. It allows to program sites as Ocaml applications and introduces new concepts to take into account the particularities of Web interaction, especially the management of URLs and sessions. This paper describes how Ocsigen uses the Objective Caml type system in a thoroughgoing(More)