• Aucun résultat trouvé

Typage monomorphe à la Curry

N/A
N/A
Protected

Academic year: 2022

Partager "Typage monomorphe à la Curry"

Copied!
3
0
0

Texte intégral

(1)

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

(2)

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

(3)

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 =. αLx =. α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

Références

Documents relatifs

Spécier partiellement un programme Éviter de programmes absurdes ( 1 + true ) Éviter la violation de la mémoire. Ne pas écrire un programme ayant des comportements indénis Ne

Mais les deux fonctions sont une instance d'une même fonction identité qui se comporte de la même façon

En fait c’est un cours sur la r´ ecursivit´ e, les r´ ef´ erences, et la preuve de programmes, revisit´ ees dans les langages fonctionnels!. C’est aussi l’occasion de voir

a montre que le λ − calcul lineaire est fortement normalise et verifie la propriete de Church-Rosser (en utilisant une reduction conservant des bonnes proprietes dans le systeme

C’est que la correspondance de Curry-Howard ne donne un programme à partir d’une preuve qu’en logique pure c’est-à-dire sans axiome.. Il faut la compléter par des

Une preuve en logique intuitionniste du second ordre fournit un programme écrit en λ-calcul.. Griffin découvre l’interprétation de la loi de Peirce par l’instruction call/cc

Curry is a successful, general-purpose, functional logic programming language that predefines a singleton type Success explicitly to support its logic component.. We take

In contrast to previous approaches to the partial evaluation of functional logic programs, we take into account the features used in contemporary Curry programs, in