Searching for authors named "Jacques Garrigue" – sorted by Relevance.
-
Polymorphic variants in Objective Caml 3
- ion K; ; x : ` e : 0 K; ` fun x ! e : ! 0 Application K; ` e 1 : ! 0 K; ` e 2 : K; ` e 1 e 2 : 0 Let K; ` e 1 : 1 K; ; x : 8B: 1 ` e 2 : 2 K; ` let x = e 1 in e 2 : 2 B = FV( 1 ) n FV() Variant K; ` e : l 2 KL () 2 KT ()(l) K; ` (l e) : Matching K; ` r i : i ! KT (
- Add To MetaCart
-
Programming with Polymorphic Variants
- 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 Obj
- Cited by 29 (8 self) – Add To MetaCart
-
Simple Type Inference for Structural Polymorphism
- 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 me
- Cited by 6 (2 self) – Add To MetaCart
-
Code reuse through polymorphic variants
- Their support for code reuse has made object-oriented languages popular. However, they do not succeed equally in all areas, particularly when data has a complex structure, making hard to keep the parallel between data and code. On the other hand, functional programming languages, which separate data
- Cited by 26 (3 self) – Add To MetaCart
-
Private row types: Abstracting the unnamed
- In addition to traditional record and variant types, Objective Caml has structurally polymorphic types, for objects and polymorphic variants. These types allow new forms of polymorphic programming, but they have a limitation when used in combination with modules: there is no way to abstract their po
- Cited by 1 (0 self) – Add To MetaCart
-
Labeled and optional arguments for Objective Caml
- We added labeled and optional arguments to the Objective Caml language, combining currying and commutation. Contrary to a previous attempt, the formal system we present here defines semantics of both out-of-order application and optional parameter discarding independently of types. We extend the ML
- Cited by 1 (0 self) – Add To MetaCart
-
Relaxing the value restriction
- Abstract. 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 subtypin
- Cited by 7 (0 self) – Add To MetaCart
-
On the Runtime Complexity of Type-Directed Unboxing
- Avoiding boxing when representing native objects is essential for the efficient compilation of any programming language. For polymorphic languages this task is difficult, but several schemes have been proposed that remove boxing on the basis of type information. Leroy's type-directed unboxing transf
- Cited by 13 (4 self) – Add To MetaCart
-
Extending ML with Semi-Explicit Higher-Order Polymorphism
- . 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
- Cited by 16 (6 self) – Add To MetaCart
-
Recursive Modules for Programming
- The ML 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
- Cited by 5 (3 self) – Add To MetaCart

