Le nom «type vide» prête peut-être à confusion. Cela signifie que, comme vous le dites vous-même, le type ne contient aucune valeur . Le «vide» ne fait référence à aucune valeur individuelle du type, il fait référence au type dans son ensemble, considéré comme un ~ ensemble de valeurs possibles. Donc, cela ne dit pas quelque chose comme «une fonction renvoyant void
ne renvoie aucune information», mais «il n'existe aucune valeur de type ⊥
».
Cela signifie qu'une fonction dont le type de résultat est ne⊥
peut jamais se terminer. S'il s'est terminé, il devrait renvoyer une valeur de ⊥
, mais bon, une telle valeur n'existe pas.
Cela signifie également qu'il n'est même pas possible de discuter de la quantité d'informations qu'une valeur de type vide contiendrait, car il n'y a pas une telle valeur. (Ou si vous voulez, une déclaration absurde comme «toute valeur de type vide contient exactement 35093658 bits d'informations» est tout à fait vraie.) Il est quelque peu utile (mais pas vraiment correct) de penser que les ⊥
valeurs contiennent une quantité infinie d'informations.
Alors qu'une fonction C avec «type de retour» peutvoid
clairement retourner, mais ne vous donne aucune information dans sa valeur de retour. Eh bien, c'est précisément ce qui caractérise un type d'unité: ses valeurs ne contiennent aucune information, car il n'y a qu'une seule de ces valeurs (vous pouvez donc toujours dire quelle sera la valeur de retour, même sans prendre la peine d'appeler la fonction).
Pour citer Conor McBride (translittéré en C):
void
signifie "ennuyeux". Cela signifie le type ennuyeux qui contient une chose, également ennuyeux. Il n'y a rien d'intéressant à gagner en comparant un élément du type ennuyeux à un autre, car il n'y a rien à apprendre sur un élément du type ennuyeux en lui accordant toute votre attention.
Il est très différent du type vide [...]. Le type vide est très excitant, car si quelqu'un vous donne jamais une valeur qui lui appartient, vous savez que vous êtes déjà mort et au paradis et que tout ce que vous voulez vous appartient.