Quantified Applicatives: API design for type-inference constraints - Inria - Institut national de recherche en sciences et technologies du numérique
Communication Dans Un Congrès Année : 2020

Quantified Applicatives: API design for type-inference constraints

Résumé

The Inferno library (https://gitlab.inria.fr/fpottier/inferno) uses an applicative functor ('a co) to represent constraint-based inference problems that elaborate into explicitly-typed term representations. A central operation of the Inferno API is the `exist` quantifier, which generates a fresh inference variable scoped in an existential constraint. `exist` returns the result of solving the constraint, as well as the elaborated type inferred for the inference variable: val exist : (variable -> 'a co) -> ('a * ty) co We found that programming with this interface is difficult and leads to program that are hard to read. The difficulty is specific to applicative functors, there would be standard solutions with a monad. We report on our API design work to solve this issue. We start by explaining the programming difficulties and why the Inferno functor is not a monad, then a first experiment with a codensity monad, and finally a simpler solution that avoids mixing several functors in the same codebase. Our approach makes good use of the "binding operators" recently introduced in OCaml to provide flexible syntactic sugar for monad or applicative-like structures. We believe that the API design pattern we propose, "turning direct outputs into modal inputs", may apply to any applicative functors with quantifiers. It may already be in use, and its discussion may benefit other projects. Experience sharing with the ML Workshop audience could be very valuable.
Fichier principal
Vignette du fichier
quantified-applicatives-workshop-paper.pdf (199.5 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-03145040 , version 1 (18-02-2021)

Identifiants

  • HAL Id : hal-03145040 , version 1

Citer

Olivier Martinot, Gabriel Scherer. Quantified Applicatives: API design for type-inference constraints. ML Family Workshop, Aug 2020, Jersey City / Online, United States. ⟨hal-03145040⟩
166 Consultations
105 Téléchargements

Partager

More