Inspiré par les vastes hiérarchies présentes dans la théorie de la complexité, je me suis demandé si de telles hiérarchies étaient également présentes pour les systèmes de types. Cependant, les deux exemples que j'ai trouvés jusqu'à présent ressemblent davantage à des listes de contrôle (avec des caractéristiques orthogonales) qu'à des hiérarchies (avec des systèmes de type de plus en plus expressifs).
Les deux exemples que j'ai trouvés sont le cube Lambda et le concept de polymorphisme de rang k . La première est une liste de contrôle avec trois options, la seconde est une véritable hiérarchie (bien que le classement k pour les valeurs spécifiques de k soit rare je crois). Toutes les autres caractéristiques du système de type que je connais sont principalement orthogonales.
Je m'intéresse à ces concepts parce que je conçois mon propre langage et je suis très curieux de voir comment il se classe parmi les systèmes de types existants (mon système de type est quelque peu non conventionnel, pour autant que je sache).
Je me rends compte que le concept d '«expressivité» peut être un peu vague, ce qui peut expliquer pourquoi les systèmes de types me semblent être des listes de contrôle.
la source
Réponses:
Il existe plusieurs sens de «expressivité» que vous pourriez souhaiter pour un système de type.
Quelles fonctions mathématiques pouvez-vous exprimer dans un système de types particulier. Par exemple, dans le calcul lambda simplement tapé, toutes les fonctions calculables ne peuvent pas être exprimées. Il en va de même pour le système , mais strictement plus de fonctions peuvent être exprimées. Ce n'est pas très intéressant une fois que vous arrivez à taper des systèmes pour les langages Turing-complets.F
Le système vérifier chaque programme écrit dans le système B ? C'est essentiellement ce que la première notion de force de cody concerne pour les PTS. Encore une fois, le système F est plus forte que la STLC dans cet ordre, étant donné que tous les types de programmes de STLC dans le Système F . De même, un système avec sous-typage sera plus fort qu'un système sans.UNE B F F
Existe-t-il des transformations locales (au sens de l'article de Felleisen sur le pouvoir expressif des langages de programmation ) qui permettent à un programme qui tape dans le système de taper dans le système B , mais pas l'inverse.A B
Un système de type garantit-il des propriétés plus fortes qu'un autre? Par exemple, les systèmes de type linéaire rejettent simplement plus de programmes, mais cela leur permet de faire des déclarations plus fortes sur les programmes qu'ils acceptent.
Malheureusement, je ne pense pas qu'il y ait eu des travaux sur la catégorisation ou la formalisation de ces notions, à l'exception du lambda-cube de Barendregt, comme discute @cody.
la source
Je ne suis pas sûr d'avoir une réponse satisfaisante à votre question, mais si vous considérez les systèmes de type purs, qui sont une généralisation des systèmes trouvés dans le cube lambda (un aperçu complet, quoique quelque peu daté, peut être trouvé dans le texte classique de Barendregt ), il y a ensuite quelques notions naturelles de hiérarchies:
la source