Skip to Main content Skip to Navigation

Langages fonctionnels, typage et interopérabilité : Objective Caml sur .NET

Abstract : The .NET platform is a modern, widespread execution environment, based on a virtual machine that interprets a typed bytecode. It claims to be perfectly suitable for running components written in many different programming languages and to allow a seamless interoperation between them.
Being a statically typed functional language with parametric polymorphism, Objective Caml has features that are quite challenging to the .NET runtime and its type system. We test the fit in a practical setting by designing and implementing OCamIL, a full-fledged compiler for Objective Caml producing verifiable .NET bytecode. It primarily aims at compatibility and interoperability.
This work questions the capabilities of the .NET platform as much as the adequacy of the official Objective Caml implementation (which is designed for an untyped runtime and discards type information early in the compilation chain). We discuss the representation of Caml values and compare two strategies: rebuilding and propagating the missing type information. Other design choices described here illustrate the trade-off between efficiency and readibility/interoperability.
We achieve interoperability by means of an Interface Description Language that closes the gap between the two distinct class systems of Objective Caml and .NET's underlying type system. We give non-trivial examples showing the benefits of interoperability.
As for performance, OCamIL proves competitive with other .NET compilers for functional languages. We also compare .NET executables with the original Objective Caml programs.
Document type :
Complete list of metadata
Contributor : Raphael Montelatici <>
Submitted on : Thursday, June 14, 2007 - 4:31:40 PM
Last modification on : Saturday, March 28, 2020 - 2:13:32 AM
Long-term archiving on: : Thursday, April 8, 2010 - 5:37:25 PM


  • HAL Id : tel-00154790, version 1



Raphaël Montelatici. Langages fonctionnels, typage et interopérabilité : Objective Caml sur .NET. Génie logiciel [cs.SE]. Université Paris-Diderot - Paris VII, 2007. Français. ⟨tel-00154790⟩



Record views


Files downloads