title: Signature de type
text: # Signature de type
  
  En programmation informatique, la signature de type définit les types de données acceptables pour une fonction ou une méthode. Une signature inclut au moins le nom de la fonction et le nombre de paramètres. Dans certains langages, elle peut aussi spécifier le type de la valeur de retour et les types de ses paramètres.
  
  ## Haskell
  
  Une signature de type en Haskell est généralement écrite dans le format suivant :
  
  Notez que la sortie finale peut être considérée comme un argument. C'est la conséquence de la curryfication.
  
  Les spécifications de type peuvent consister en un type, tel que Integer, ou une variable de type dans le cas de fonctions polymorphiques. En Haskell, ces variables de type peuvent être notamment "a", "b" ou "anyType", de sorte que l'on peut écrire :
  
  Puisque Haskell supporte des fonctions d'ordre supérieur, des fonctions peuvent être passées comme arguments. Ceci s'écrit comme suit :
  
  Cette fonction accepte une fonction avec comme signature de type a -> a, et retourne des données de type a.
  
  ## Java
  
  Dans la machine virtuelle Java, on utilise les signatures de type interne pour identifier les méthodes et les classes au niveau du code de la machine virtuelle.
  
  Exemple : La méthode String String.substring(int, int) est représentée comme java/lang/String/substring(II)Ljava/lang/String;
  
  