#### Filter Results:

- Full text PDF available (35)

#### Publication Year

1993

2016

- This year (0)
- Last 5 years (11)
- Last 10 years (17)

#### Publication Type

#### Co-author

#### Journals and Conferences

#### Key Phrases

Learn More

- Jacques Garrigue
- 1998

Type inference for structural polymorphism —i.e. record and variant polymorphism— has been an active area of research since more than 10 years ago, and many results have been obtained. However these results are yet to be applied to real programming languages. Based on our experience with the Objective Label system, we describe how variant polymorphism can… (More)

- Jacques Garrigue, Didier Rémy
- Inf. Comput.
- 1999

We propose a modest conservative extension to ML that allows semiexplicit first-class polymorphism while preserving the essential properties of type inference. In our proposal, the introduction of polymorphic types is fully explicit, that is, both introduction points and exact polymorphic types are to be specified. However, the elimination of polymorphic… (More)

- Jacques Garrigue, Didier Rémy
- APLAS
- 2013

GADTs, short for Generalized Algebraic DataTypes, which allow constructors of algebraic datatypes to be non-surjective, have many useful applications. However, pattern matching on GADTs introduces local type equality assumptions, which are a source of ambiguities that may destroy principal types— and must be resolved by type annotations. We introduce… (More)

- Jacques Garrigue
- FLOPS
- 2002

Restricting polymorphism to values is now the standard way to obtain soundness in ML-like programming languages with imperative features. While this solution has undeniable advantages over previous approaches, it forbids polymorphism in many cases where it would be sound. We use a subtyping based approach to recover part of this lost polymorphism, without… (More)

- Jacques Garrigue, Didier Rémy
- TACS
- 1997

We propose a modest conservative extension to ML that allows semi-explicit higher-order polymorphism while preserving the essential properties of ML. In our proposal, the introduction of polymorphic types remains fully explicit, that is, both the introduction and the exact polymorphic type must be speci ed. However, the elimination of polymorphic types is… (More)

- Jacques Garrigue
- APLAS
- 2001

We propose a new way to mix constrained types and type inference, where the interaction between the two is minimal. By using local constraints embedded in types, rather than the other way round, we obtain a system which keeps the usual structure of an Hindley-Milner type system. In practice, this means that it is easy to introduce local constraints in… (More)

- Jacques Garrigue, Hassan Aı̈t-Kaci
- 1994

Formal calculi of record structures have recently been a focus of active research. However, scarcely anyone has studied formally the dual notion—i.e., argument-passing to functions by keywords, and its harmonization with currying. We have. Recently, we introduced the label-selective -calculus, a conservative extension of -calculus that uses a labeling of… (More)

- Keiko Nakata, Jacques Garrigue
- ICFP
- 2006

TheML module system is useful for building large-scale programs. The programmer can factor programs into nested and parameterized modules, and can control abstraction with signatures. Yet ML prohibits recursion between modules. As a result of this constraint, the programmer may have to consolidate conceptually separate components into a single module,… (More)

- Jacques Garrigue
- 2004

Polymorphic variants are a well-known feature of the Objective Caml programming language, and they have turned popular since their introduction. They allow structural equality of algebraic type definitions, and code reuse through their polymorphism. Their typing and compilation have been studied in the past, and there are already detailed published works… (More)

- Jacques Garrigue, Keiko Nakata
- Higher-Order and Symbolic Computation
- 2011

The ML module system facilitates the modular development of large programs, through decomposition, abstraction and reuse. To increase its flexibility, much work has been devoted to extending it with recursion, which is currently prohibited. The introduction of recursion certainly adds expressivity to the module system. However it also brings out non-trivial… (More)