|
Département d'Informatique |
Licence Informatique 2001-2002 |
Programmation Fonctionnelle |
3 décembre |
|
Types et modèles
(où l'on mesure la puissance d'expression du λ-calcul pur en montrant
qu'il est suffisant pour modéliser tous les types de données)
I Les types de base
-
Booléens.
Les constantes booléennes sont modélisées de la façon suivante:
vrai = λ x . λ y . x |
faux = λ x . λ y . y |
Définir dans ce modèle les relations et (et logique),
ou (ou logique) et non (non logique),
puis imp (⇒) et equiv (⇔).
- Entiers.
Modéliser la fonction succ (successeur)
sur les entiers naturels de Church:
|
|
· · · |
|
= λ f . λ x .(f (f ... (f |
|
x) ... )) |
|
Définir l'addition, la multiplication et la puissance sur ces entiers.
II Les autres types
-
n-uplets.
-
Modéliser la fonction tuple3 qui crée un triplet
et les fonctions index1, index2 et index3
qui en renvoient les composantes.
- Modéliser la curryfication pour les fonctions à 3 arguments.
- Listes (récursivité).
On modélise les constructeurs de listes cons et nil (liste vide)
de la manière suivante:
cons = λ h . λ t . λ c . (c h t) |
nil = λ x . vrai |
-
Modéliser la fonction long qui donne la longueur d'une liste quelconque.
- Modéliser la fonction somme qui calcule la somme des valeurs
d'une liste d'entiers de Church.
This document was translated from LATEX by
HEVEA.