Inférence de types

Inférence de types

L'inférence de types est un mécanisme qui permet à un compilateur ou un interpréteur de rechercher automatiquement les types associés à des expressions, sans qu'ils soient indiqués explicitement dans le code source.

Il s'agit pour le compilateur ou l'interpréteur de trouver le type le plus général que puisse prendre l'expression. Les avantages à disposer de ce mécanisme sont multiples : le code source est plus aéré, le développeur n'a pas à se soucier de retenir les noms de types, l'interpréteur fournit un moyen au développeur de vérifier (en partie) le code qu'il a écrit et le programme est peu modifié en cas de changement de structure de données. Les expressions restent les plus générales possibles - l'inférence de types va de pair avec le polymorphisme, puisque le compilateur génère des types abstraits au besoin. Enfin, le compilateur, lui, dispose de toutes les informations de type, il y a un typage fort et statique, ce qui lui permet de produire du code plus sûr et plus efficace.

Le mécanisme d'inférence de type est présent dans certains langages de programmation fonctionnelle.

Exemple

OCaml est un exemple de langage qui utilise l'inférence de type :

    let rec longueur = function
      [] -> 0
    | h::t -> 1 + (longueur t);;

Le code présenté montre qu'il s'agit d'une fonction qui prend en entrée une liste quelconque (vide ou non) et qu'il renvoie un entier. En fait, cette fonction permet de calculer la longueur d'une liste. Lorsque ce morceau de code est envoyé à l'interpréteur, celui-ci répond :

    longueur : 'a list -> int = <fun>

Caml indique ainsi qu'il reconnait que la fonction longueur prend en entrée un quelque chose de type 'a list, c'est-à-dire une liste quelconque (d'entiers, de réels, de chaînes de caractères, etc.). Caml reconnait aussi que la fonction renvoie une valeur de type entier (int).

C# est un autre exemple de langage qui utilise l'inférence de type.

    var name = "James Bond";
    var age = 25;
    var isSecret = true;
    var r = 2.52;
 
    Type nameType = name.GetType();
    Type ageType = age.GetType();
    Type isSecretType = isSecret.GetType();
    Type rType = r.GetType();
 
    Console.WriteLine("name is type : " + nameType.ToString());
    Console.WriteLine("age is type : " + ageType.ToString());
    Console.WriteLine("isRabbit is type : " + isSecretType.ToString());
    Console.WriteLine("r is type : "+rType.ToString());

Exemples de langages utilisant l'inférence de type


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Inférence de types de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Inference de types — Inférence de types L inférence de types est un mécanisme qui permet à un compilateur ou un interpréteur de rechercher automatiquement les types associés à des expressions, sans qu ils soient indiqués explicitement dans le code source. Il s agit… …   Wikipédia en Français

  • Inférence De Types — L inférence de types est un mécanisme qui permet à un compilateur ou un interpréteur de rechercher automatiquement les types associés à des expressions, sans qu ils soient indiqués explicitement dans le code source. Il s agit pour le compilateur… …   Wikipédia en Français

  • Inférence — Les types de raisonnement rigoureux déductif (synthétique) Déduction (implication ou inférence universelle) Syllogisme Raisonnement par l absurde (apagogie) ; par la contraposée inductif (analytique) induction complète (étude de tous les cas …   Wikipédia en Français

  • Inference — Inférence L inférence est une opération mentale, ou jugement, qui consiste à tirer une conclusion (d une série de propositions reconnues pour vraies). Ces conclusions sont tirées à partir de règles de base. Dans sa définition classique, l… …   Wikipédia en Français

  • Inference — is the act or process of deriving a conclusion based solely on what one already knows. Inference is studied within several different fields. * Human inference (i.e. how humans draw conclusions) is traditionally studied within the field of… …   Wikipedia

  • Types de données — Type (informatique) Pour les articles homonymes, voir Type (homonymie). En programmation un type de données, ou simplement type, définit le genre de contenu d une donnée et les opérations pouvant être effectuées sur la variable correspondante.… …   Wikipédia en Français

  • Inférence inductive — Induction (logique) Pour les articles homonymes, voir Induction. À la différence de la déduction qui impose des propositions de départ non supposées vraies, l induction se propose de chercher des lois générales à partir de l observation de faits… …   Wikipédia en Français

  • Moteur D'inférence — Un moteur d inférence (du verbe inférer = déduire) est un logiciel correspondant à un algorithme de simulation des raisonnements déductifs. Un moteur d inférence permet aux systèmes experts de conduire des raisonnements logiques et de dériver des …   Wikipédia en Français

  • Moteur d'inference — Moteur d inférence Un moteur d inférence (du verbe inférer = déduire) est un logiciel correspondant à un algorithme de simulation des raisonnements déductifs. Un moteur d inférence permet aux systèmes experts de conduire des raisonnements… …   Wikipédia en Français

  • Moteur d'inférence — Un moteur d inférence (du verbe « inférer » qui signifie « déduire ») est un logiciel correspondant à un algorithme de simulation des raisonnements déductifs. Un moteur d inférence permet aux systèmes experts de conduire des… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”