La logique affine élémentaire est un système de types qui capture la classe de termes λ qui peuvent être réduits en temps élémentaire. De plus, les termes typables EAL peuvent être réduits en utilisant le fragment abstrait de l'algorithme de Lamping, ce qui est particulièrement intéressant pour moi car j'explore les combinateurs d'interaction correspondants.
Ma question est, comment peut-on créer un langage de programmation pratique en utilisant EAL comme système de type sous-jacent? C'est-à-dire, quel type d'extensions (points fixes, polymorphisme, types dépendants, types de données, etc.) pourraient être apportées au système de type principal sans affecter cette caractéristique, et un tel langage serait-il utilisable dans la pratique, ou le serait-il en quelque sorte aussi restrictif pour des raisons que je ne connais pas?
la source
Réponses:
Quelque chose de très similaire, mais utilisant une logique affine légère (LAL) au lieu de EAL, a été tenté il y a quelques années par Baillot, Gaboardi et Mogbil (vous pouvez trouver le document ici ). Je pense que leur travail peut être facilement généralisé à EAL, qui est un système plus libéral.
En ce qui concerne les caractéristiques d'un tel langage, vous avez nativement le polymorphisme (EAL est une restriction de la logique linéaire du second ordre). Pour autant que je sache, personne n'a examiné les types dépendants, mais je ne vois pas pourquoi ils ne devraient pas fonctionner. En fait, EAL non typé fonctionne aussi bien que EAL typé, car ses propriétés de normalisation ne dépendent pas des types.
En tout cas, si vous êtes intéressé par la relation entre l'évaluation optimale, l'EAL et les logiques légères en général, je vous suggère de jeter un œil aux articles de Coppola du début au milieu des années 2000.
la source