Le type vide est en théorie des types un type qui ne comporte pas de valeurs.
On l'abrège communément par bot (de bottom type), le symbole () ou par l'approximation ASCII |.
On l'appelle aussi parfois type zéro. Il ne faut pas le confondre avec le type top ou le type unité. Le type top comprend toutes les valeurs d'un système. Le type unité a une seule valeur.
On utilise souvent le type vide dans les cas suivants :
Pour signifier le faux. Il peut être employé pour définir la négation et exprimer l'axiome ex falso sequitur quodlibet : Pour toute proposition : . Hormis en logique minimale que rejette cet axiome, le type vide désigne donc par voie de conséquence, l'absurdité, l'état d'incohérence du système.
Pour signaler qu'une fonction ou un calcul diverge ; en d'autres termes, il ne retourne pas de résultat à l'appelant. Cela ne signifie pas nécessairement que le programme ne se termine pas ; une fonction peut terminer sans retourner à son appelant, ou sortir par un moyen autre qu'un retour normal, par exemple via une continuation.
Pour indiquer une erreur ; cela arrive principalement dans des langages théoriques dans lesquels les distinctions entre les erreurs ne sont pas importantes. Les langages de programmation pratiques utilisent une gestion d'exceptions à la place.
Le logiciel Coq définit le type vide dans sa librairie standard par :
Inductive False : Prop :=.
Par opposition, le type unité est
Inductive True : Prop :=
I : True.
Sans entrer dans une description du langage, on voit que I : True est un (le) constructeur pour le type True. A contrario, l'absence de constructeur pour False interdit l'instanciation, autrement dit, on ne peut pas construire un objet de type False ; ce qui est heureux car, selon la correspondance de Curry-Howard, un objet de ce type serait assimilable à une preuve de l'incohérence de la logique.
La définition de False génère automatique l'axiome ex falso sequitur quodlibet :
False_ind
forall P : Prop, False -> P
La négation est simplement définie par :
Definition not (A:Prop) := A -> False.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
En programmation informatique, void est un mot-clé que l'on retrouve dans le langage C (qui signifie "vide" ou "nul") et plusieurs autres langages de programmation, comme le C++, le C# ou le Java. Le mot-clé void peut être utilisé là où se place habituellement le type de retour d'une fonction, comme int pour un entier ou string pour une chaîne de caractères. Lorsque le programmeur écrit void, cela permet d'indiquer que la fonction ne renvoie rien. C'est ce qu'on appelle une procédure dans d'autres langages, comme Pascal et Visual Basic.
Haskell est un langage de programmation fonctionnel fondé sur le lambda-calcul et la logique combinatoire. Son nom vient du mathématicien et logicien Haskell Curry. Il a été créé en 1990 par un comité de chercheurs en théorie des langages intéressés par les langages fonctionnels et l'évaluation paresseuse. Le dernier standard est Haskell 2010 : c'est une version minimale et portable du langage conçue à des fins pédagogiques et pratiques, dans un souci d'interopérabilité entre les implémentations du langage et comme base de futures extensions.
Un type unité est un type mathématique avec une seule valeur. L'ensemble associé avec le type unité peut être n'importe quel ensemble singleton. Il y a un isomorphisme entre deux tels ensembles, donc on parle souvent « du » type unité et on ignore les détails de cette valeur. On peut aussi considérer le type unité comme un 0-uplet, c’est-à-dire un produit cartésien de zéro type. En théorie des catégories, le type unité est un objet terminal dans beaucoup de catégories basées sur les ensembles.