Typage monomorphe à la Curry
Typage monomorphe
Expressions à la Curry
M ::= x |
cte |
hM, Mi |
M M |
λx.M |
letx=M inM
2
Quelques exemples
letx:int= 3inx+ 1 s'écrit maintenant
letx= 3inx+ 1
letx:int= 4in(lety :int=x+ 1inx∗y)) s'écrit maintenant
letx= 4in(lety =x+ 1inx∗y))
3
Règles du typage monomorphe à la Curry Γ`x: Γ(x) Γ`cte:T C(cte)
Γ`M :A→B Γ`N :A Γ`M N :B
Γ, x:A`M :B Γ`λx.M :A→B Γ`M :A Γ`N :B
Γ` hM, Ni:A×B
Γ`M :A Γ, x:A`N :B Γ`letx=M inN :B
4
Propriétés ?
L'unicité n'est plus vraie :
`λx.x:int→int `λx.x:bool→bool
Mais les deux fonctions sont uneinstance d'une même fonction identité qui se comporte de la même façon :
Polymorphisme
5
Vers un algorithme de typage Les substitutions
Les unicateurs d'un système d'équations
Algorithme d'unication d'un système d'équations
La construction d'un système d'équations à partir d'un terme Algorithme de typage d'un terme à l'aide de l'unication
6
Types à la Curry : dicultés de l'algorithme de typage
T ype(Γ, λx.M) =A→B s'il existe At.q.
T ype((Γ, x:A), M) =B T ype(Γ,letx=M inN) =B s'il existe At.q.
T ype(Γ, M) =Aet T ype((Γ, x:A), N) =B
7
Vers un algorithme de typage
Soit M un terme à typer. Pour chaque variablex de M on introduit une variable de typeαx et pour chaque sous-expression N de M on introduit une variable de type αN.
On introduit un tableau deschémas de typespour les constantes, appelé ST C. Ainsi par exempleST C(fst) =α×β→α.
8
On associe à M un système d'équationsSE(M)comme suit :
M SE(M)
x {αM =. αx}
cte {αM =. ST C(cte)}
hN, Li {αM =. αN ×αL} ∪SE(N)∪SE(L) N L {αN =. αL →αM} ∪SE(N)∪SE(L) λx.N {αM =. αx→αN} ∪SE(N)
letx=N inL {αM =. αL;αx =. αN} ∪SE(N)∪SE(L)
9
Correction et complétude de l'algorithme de typage Théorème : (Correction) Si σ est une solution deSE(M), alors ∆`M :τ(αM), où ∆ ={x:τ(αx)|x∈F V(M)} etτ est une instance de σ.
Théorème : (Complétude) S'il existent ∆ etA t.q.
∆`M :A, alorsSE(M) admet une solution.
10
Principalité de l'algorithme de typage
Théorème : (Principalité) SiM est typable, i.e., ∆` M :A, alors Aest une instance du type principal σ(αM), où σ est une solution principale du système SE(M).
11