title: Type unité
text: # Type unité
  
  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. Le type unité ne doit pas être confondu avec le zéro ou type vide, qui ne contient aucune valeur et est l'objet initial de ces catégories.
  
  ## Type unité dans les langages de programmation
  
  Plusieurs langages de programmation, en particulier des langages fonctionnels tels Haskell, ML et Scala, utilisent le type unité pour spécifier
  
  * le type retourné par une fonction qui n’effectue que des effets de bord,
  * ainsi que le type d'argument d'une fonction qui ne requiert pas d'argument.
  
  En ML (resp. Scala), ce type est noté unit (resp. Unit) et son unique valeur, reflétant l'interprétation de 0-uplet. En Haskell et Clean, le type unité comme sa valeur sont notés.
  
  Dans des langages impératifs tels que C, C++, C#, et Java, le type void remplit le même usage. Cependant, ces langages ne fournissent pas de moyen de déclarer un objet ou de représenter une valeur de type void, ce qui, au sens strict, rend le type void différent du type unité.
  
  