Lifpf td1 Enonce

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

LIFPF – Programmation fonctionnelle

TD1 – introduction au λ-calcul


Licence informatique UCBL – Printemps 2023–2024

Exercice 1 : Typage et évaluation en λ-calcul


1. Pour chacune des λ-expressions suivantes, donner son type en supposant que le seul
type primitif est number puis l’évaluer en explicitant chaque β-réduction. Si l’expression
n’est pas typable, expliquer pourquoi. On supposera que l’addition notée + a pour type
number → number → number et se réduit par calcul arithmétique usuel, de même que
pour la multiplication notée ∗. Par exemple, (λx .x + 3) 2 a pour type number et peut se
x
réduire en (λx .x + 3) 2 2+3 5
1. (λx .λy .(x + y )) 3 4
2. (λx .λy .(x y )) 3 4
3. λx .(x x )
4. (λx .λy .(y (x + 2))) 5 (λz.(z ∗ 3))
5. (λx .((λy .(x + y )) x )) 5
6. (λx .((x (λy .(y + 2))) + (x (λz.(z ∗ 3))))) ((λu.λw .(w u)) 5)
7. (λx .λy .(x y ))(λz.z)
8. λx .(x + 3)(λy .y )
9. (λx .λy .x )
10. (λx .λy .x ) 3
11. (λx .λy .(y (3 + x ))) 4 (λz.(z ∗ 2))
12. (λx .((λy .(y ∗ x )) x )) 5
2. Donner deux séquences de réductions différentes de l’expression (λx .x + 5)((λz.z) 2)

Exercice 2 : Pour aller plus loin : codage des booléens dans le λ-calcul
Dans cet exercice on va s’intéresser au codage des booléens en λ-calcul pur appelé booléens
de Church. Dans ce codage, les valeurs de vérités sont des fonctions et les fonctions booléennes
des fonctions d’ordre supérieur. On définit les termes suivants qui représentent « vrai », « faux »
et la fonction « et » :
— T = λx .λy .x
— F = λx .λy .y
— AND = λx .λy .((x y ) F), soit λx .λy .x y F avec les parenthèses implicites
1. Vérifier les réductions suivantes

AND(T)(T) T
AND(T)(F) F
AND(F)(T) F
AND(F)(F) F
1
2. Quelle est la fonction booléenne associée à XXX = λx .λy .x y x ?
3. Qu’est ce qui se passe quand on évalue AND x y où x ou y n’est pas la représentation
d’un booléen ?
4. Donner une représentation de la fonction booléenne « non ».
5. Donner une représentation de la fonction booléenne « ou ».
6. Montrer que le terme IF = λx .x permet de représenter l’instruction conditionnelle IF
cond THEN M ELSE N.

Vous aimerez peut-être aussi