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 . 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.
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 qui 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 =
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.
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.
The course covers the principles of chemical kinetics, including differential rate laws, derivation of exact and approximate integral rate laws for common elementary and composite reactions, fundament
(merge of parprog1, scala-reactive, scala-spark-big-data)
In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for rea
This advanced undergraduate programming course covers the principles of functional programming using Scala, including the use of functions as values, recursion, immutability, pattern matching, higher-
C# (C sharp en anglais britannique) est un langage de programmation orientée objet, commercialisé par Microsoft depuis 2002 et destiné à développer sur la plateforme Microsoft .NET. Il est dérivé du C++ et très proche du Java dont il reprend la syntaxe générale ainsi que les concepts, y ajoutant des notions telles que la surcharge des opérateurs, les et les délégués. Il est utilisé notamment pour développer des applications web sur la plateforme ASP.NET, ainsi que des jeux vidéo avec le moteur de jeux Unity.
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.
Rust est un langage de programmation compilé multi-paradigme conçu et développé par Mozilla Research depuis 2010. Il a été conçu pour être « un langage fiable, concurrent, pratique », supportant les styles de programmation purement fonctionnel, modèle d'acteur, procédural, ainsi qu'orienté objet sous certains aspects. En 2020, ses domaines de prédilection sont la programmation système, les applications en ligne de commande, les applications Web via WebAssembly, les services réseaux et les systèmes embarqués.
Explore la mécanique des fractures, la croissance des fissures et la théorie des maillons les plus faibles, en mettant l'accent sur la distribution statistique des tailles de fissures et l'importance de la plus grande fissure dans la défaillance matérielle.
,
Type inference in the presence of first-class or "impredicative" second-order polymorphism a la System F has been an active research area for several decades, with original works dating back to the end of the 80s. Yet, until now many basic problems remain ...
Assoc Computing Machinery2024
In the collective imagination the villa is a manifesto of 'the good life’, often representing for architects a laboratory of experimentation and style and an exception in their portfolio. The fate of the villa in contemporary architecture and research cult ...
The increasing interest towards the concept of the so called ‘escape from the city’, fueled by the recent pandemic, prompt us to put the holiday villa at the center of research attention. In the collective imagination the villa is a manifesto of 'the good ...