Simply typed lambda calculusThe simply typed lambda calculus (), a form of type theory, is a typed interpretation of the lambda calculus with only one type constructor () that builds function types. It is the canonical and simplest example of a typed lambda calculus. The simply typed lambda calculus was originally introduced by Alonzo Church in 1940 as an attempt to avoid paradoxical use of the untyped lambda calculus. The term simple type is also used to refer extensions of the simply typed lambda calculus such as products, coproducts or natural numbers (System T) or even full recursion (like PCF).
Intuitionistic type theoryIntuitionistic type theory (also known as constructive type theory, or Martin-Löf type theory) is a type theory and an alternative foundation of mathematics. Intuitionistic type theory was created by Per Martin-Löf, a Swedish mathematician and philosopher, who first published it in 1972. There are multiple versions of the type theory: Martin-Löf proposed both intensional and extensional variants of the theory and early impredicative versions, shown to be inconsistent by Girard's paradox, gave way to predicative versions.
Course-of-values recursionIn computability theory, course-of-values recursion is a technique for defining number-theoretic functions by recursion. In a definition of a function f by course-of-values recursion, the value of f(n) is computed from the sequence . The fact that such definitions can be converted into definitions using a simpler form of recursion is often used to prove that functions defined by course-of-values recursion are primitive recursive.
Coq (logiciel)Coq est un assistant de preuve utilisant le langage Gallina, développé par l'équipe PI.R2 de l’Inria au sein du laboratoire PPS du CNRS et en partenariat avec l'École polytechnique, le CNAM, l'Université Paris Diderot et l'Université Paris-Sud (et antérieurement l'École normale supérieure de Lyon). Le nom du logiciel (initialement CoC) est particulièrement adéquat car : il est français ; il est fondé sur le calcul des constructions (CoC abrégé en anglais) introduit par Thierry Coquand.
Scala (langage)Scala est un langage de programmation multi-paradigme conçu à l'École polytechnique fédérale de Lausanne (EPFL) pour exprimer les modèles de programmation courants dans une forme concise et élégante. Son nom vient de l'anglais Scalable language qui signifie à peu près « langage adaptable » ou « langage qui peut être mis à l'échelle ». Il peut en effet être vu comme un métalangage. Scala intègre les paradigmes de programmation orientée objet et de programmation fonctionnelle, avec un typage statique.
Conversion de typeEn informatique la conversion de type, le transtypage ou la coercition (cast en anglais) est le fait de convertir une valeur d'un type (source) dans un autre (cible). On distingue trois formes de conversion (dont un seul mérite vraiment le nom de conversion) suivant la relation de sous-typage existant entre les types source et cible : la conversion entre types incomparables ; la coercition ascendante (transtypage vers le haut) ; la coercition descendante (transtypage vers le bas). C'est la coercition la plus ancienne historiquement.
CurryficationEn informatique, plus précisément en programmation fonctionnelle, la curryfication est la transformation d'une fonction à plusieurs arguments en une fonction à un argument qui retourne une fonction sur le reste des arguments. L'opération inverse est possible et s'appelle la décurryfication. Le terme vient du nom du mathématicien américain Haskell Curry, bien que cette opération ait été introduite pour la première fois par Moses Schönfinkel. Considérons une fonction add qui prend deux arguments (x et y) et en renvoie la somme.
Inférence de typesL'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.
Ensemble videvignette|Notation de l'ensemble vide. En mathématiques, l'ensemble vide est l'ensemble ne contenant aucun élément. L'ensemble vide peut être noté d'un O barré, à savoir ∅ ou simplement { }, qui est une paire d'accolades ne contenant qu'une espace, pour représenter un ensemble qui ne contient rien. La notation ∅ a été introduite par André Weil, dans le cadre de l'institution de notations par le groupe Bourbaki. Von Neumann dans son article de 1923, qui est l'une des premières références qui l'aborde, le note O.
Théorie des ensemblesLa théorie des ensembles est une branche des mathématiques, créée par le mathématicien allemand Georg Cantor à la fin du . La théorie des ensembles se donne comme primitives les notions d'ensemble et d'appartenance, à partir desquelles elle reconstruit les objets usuels des mathématiques : fonctions, relations, entiers naturels, relatifs, rationnels, nombres réels, complexes... C'est pourquoi la théorie des ensembles est considérée comme une théorie fondamentale dont Hilbert a pu dire qu'elle était un « paradis » créé par Cantor pour les mathématiciens.
Primitive data typeIn computer science, primitive data types are a set of basic data types from which all other data types are constructed. Specifically it often refers to the limited set of data representations in use by a particular processor, which all compiled programs must use. Most processors support a similar set of primitive data types, although the specific representations vary. More generally, "primitive data types" may refer to the standard data types built into a programming language (built-in types).
Ensemble finiEn mathématiques, un ensemble fini est un ensemble qui possède un nombre fini d'éléments, c'est-à-dire qu'il est possible de compter ses éléments, le résultat étant un nombre entier. Un ensemble infini est un ensemble qui n'est pas fini. Ainsi l'ensemble des chiffres usuels (en base dix) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} qui possède 10 éléments, est fini. De même l'ensemble des lettres de l'alphabet qui possède 26 éléments. L'ensemble de tous les nombres entiers naturels {0, 1, 2, 3,..., 10,..., 100,...