The module system of SML is a small typed language of its own. As is, one would expect a proof of its soundness following from a proof of subject reduction, but none exists. As a consequence the theoretical study of reductions is diicult, and for instance, the question of normalization of the module calculus can not even be asked. In this paper, we b u i l d a v ariant of the SML module system | inspired from recent w orks | which enjoys the subject reduction property. This was the initial motivation. Besides our system enjoys other type-theoretic properties: the obtained calculus is strongly normalizing, there are no syntactic restrictions on module paths, it enjoys a purely applicative s e m a n tic, every module has a principal type, and type inference is decidable. Moreover we conjecture that type abstraction | a c hieved through an explicit declaration of the signature of a module at its deenition | is preserved. Le syst eme de modules de SML est un vrai petit langage typ e. Alors qu'on pourrait attendre une preuve de la consistance des syst emes de modules d ecoulant d e l ' etude des r eductions de modules, en particulier d'une preuve d'autor eduction, aucune preuve de ce genre ne semble exister. Or cela est un pr eliminaire n ecessaire a toute etude des r eductions, et en particulier a la question de la normalisation du syst e m e d e m o d u l e s. Dans ce rapport, nous construisons une variante du syst eme de modules de SML, inspir ee de travaux r ecents, qui poss ede la propri et e d'autor eduction. Cette motivation initiale conduit par ailleurs a un syst eme de modules poss edant des propri et es th eoriques remarquables: le calcul de modules est fortement normalisant, aucune restriction syntaxique sur les chemins d'acc es n'est n ecessaire, la s emantique de notre syst eme est purement applicative, tout module poss ede un type principal, et l'inf erence de type est d ecidable. Nous conjecturons par ailleurs que l'abstraction de type | obtenue par un m ecanisme de d eclaration explicite de la signature d'un module lors de sa d eenition | est pr eserv ee.
[1]
Thierry Coquand,et al.
The Calculus of Constructions
,
1988,
Inf. Comput..
[2]
WadlerPhilip,et al.
Report on the programming language Haskell
,
1992
.
[3]
Donald Sannella,et al.
The Definition of Extended ML: A Gentle Introduction
,
1997,
Theor. Comput. Sci..
[4]
Robin Milner,et al.
A Type Discipline for Program Modules
,
1987,
TAPSOFT, Vol.2.
[5]
Masako Takahashi,et al.
Parallel reductions in λ-calculus (revised version)
,
1992
.
[6]
Xavier Leroy,et al.
Applicative functors and fully transparent higher-order modules
,
1995,
POPL '95.
[7]
Mark Lillibridge,et al.
A type-theoretic approach to higher-order modules with sharing
,
1994,
POPL '94.
[8]
Francois M. Rouaix.
Alcool-90. Typage de la surcharge dans un langage fonctionnel
,
1990
.
[9]
Mark P. Jones,et al.
Using parameterized signatures to express modular structure
,
1996,
POPL '96.
[10]
Frank Pfenning,et al.
A Module System for a Programming Language Based on the LF Logical Framework
,
1998,
J. Log. Comput..
[11]
Donald Sannella.
Formal program development in Extended ML for the working programmer
,
1990
.
[12]
Luca Cardelli,et al.
Abstract Types and the Dot Notation
,
1990,
Programming Concepts and Methods.
[13]
William M. Farmer,et al.
The IMPS User's Manual
,
1995
.
[14]
Xavier Leroy,et al.
Manifest types, modules, and separate compilation
,
1994,
POPL '94.
[15]
John C. Mitchell,et al.
Abstract types have existential types
,
1985,
POPL.