Un peu de λ-calcul
Qu’est-ce?
Ile cœur d’un langage de programmation fonctionnelle
I´etudier une extension nouvelle pour un langage de
programmation passe volontiers par l’´etude d’un λ-calcul
´etendu par quelques ecanismes
Ile formalisme dans lequel sont d´evelopp´ees de nombreuses
m´ethodes pour l’analyse de programmes
Isyst`emes de types
Ipreuve de programmes
Iavant cela:
un mod`ele ´el´ementaire exprimant la notion de calcul
Les termes du λ-calcul
la syntaxe:
M::= λx.M|M M0|xfun x -> m | m m’ | x
λx.M, c’est fun x -> M
Iλx.M: abstraction M M0: application
Iil n’y a plus que des fonctions
pas d’int, de bool, de types somme, de filtrage, de ref,
d’exceptions
Iλest un lieur
Ivl(M): variables libres de M
Iα-conversion: on identifie λx.Met λy.M[y/x],
pour peu que y/vl(M)
Iexemples: λx.xλxy.(y x)λu.v(λu.u)u
Ion note λxyz.Mpour λx. λy. λz.M (cf. fun x y z -> ..)
Isimilairement, M M0M00 repr´esente (M M0)M00
Un calcul de fonctions
r`egle de calcul: la β-r´eduction
(λx.M)M0M[M0/x]
Iexemple: λuv.(v u u)(λx.x)λv.v(λx.x) (λx.x)
IM[M0/x]: on remplace xpar M0dans Men faisant des
α-conversions si n´ecessaire (substitution)
Iexemple: les entiers de Church
1 = λf x.(f x) 2 = λf x.(f(f x)) n=λf x.(fnx)
Id´efinition du successeur? de l’addition? de la multiplication?
λn. λf x .f(n f x )λn m. λf x .(n f (m f x )) λn m. λf x .(n(m f )x)
Id´efinition de z´ero? λf x .x
Itype des entiers? (’a -> ’a) -> ’a -> ’a
Icalculer passer son argument `a une fonction
notion de fonction diff´erente de la notion usuelle en maths
I(λx.M)M0est un redex
un terme peut “contenir” plusieurs redex
Relation de r´eduction
Ion d´efinit la mani`ere dont les termes se r´eduisent par des
r`egles d’inf´erence
(λx.M)M0M[M0/x]βMM0
M N M0Nµl
MM0
N M N M0µr
MM0
λx.Mλx.M0ξ
Iβ, µl, µr, ξ sont les noms des r`egles (pour faire joli)
Iimplicitement, chaque “identificateur” (metavariable) qu’on
mentionne est quantifi´e universellement
pour tout M, pour tout N, pour tout x,. . .
Iau-dessus: pr´emisses/hypoth`eses, en dessous: la conclusion
Ices r`egles d´efinissent des arbres de d´erivation
Iaux feuilles: β/ aux nœuds: µl, µr, ξ
Iceci d´efinit la relation de r´eduction, not´ee
c’est en fait le mˆeme genre de d´efinition que pour la syntaxe
1 / 15 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !