• Aucun résultat trouvé

Majeure M1 Cours Langages de Programmation CORRIGE DE LA COMPOSITION

N/A
N/A
Protected

Academic year: 2022

Partager "Majeure M1 Cours Langages de Programmation CORRIGE DE LA COMPOSITION"

Copied!
2
0
0

Texte intégral

(1)

Majeure M1 Cours Langages de Programmation CORRIGE DE LA COMPOSITION

Jean-Jacques L´evy 5 D´ecembre 2000, 3h

Avertissement On attachera une grande importance `a la clart´e, `a la pr´ecision, `a la concision de la edaction. Seules les notes de cours sont autoris´ees.

Question 1 Variables libres et li´ees.

a) Seul x est libre dansM = (λf.λg.λx.gx+ 3)(λx.x+ 4)(λy.x+y) b) M[f\g] =M[g\f] =M[y\x+y] =M.

M[x\x+y] = (λf.λg.λx.f x+ 3)(λx.x+ 4)(λz.x+y+z).

c) (λf.λg.λx.λy.M)I J3 2 1→(λg.λx.λy.M)J3 2 1→(λx.λy.M) 3 2 1

→(λy.(λf.λg.λx.gx+ 3)(λx.x+ 4)(λy.3 +y)) 2 1

→(λf.λg.λx.gx+ 3)(λx.x+ 4)(λy.3 +y) 1

→(λg.λx.gx+ 3)(λy.3 +y) 1

→(λx.(λy.3 +y)x+ 3) 1→(λy.3 +y)1 + 3)

→3 + 1 + 3→4 + 3→7 Question 2

a)foldR2 =µφ.λf.λx.λy.

ifnilxthencelse ifnily thencelse f (hdx) (hdy) (φ f (tlx) (tly)c)

b) foldR2: (α→β →γ→γ)→list(α)→list(β)→γ →γ Question 3 R´ecursion

a)letrecx=M inN =letx=µx.MinN µx.M =letrecx=M inx.

b) letrecx=M inN →N[x\letrecx=M inx].

c)µx.M =Y(λx.M) d) Y =λf.µx.f x.

e) (λf.µx.f x)(λy.2) =Y(λy.2)→(λy.2)(Y(λy.2))→2.

Question 4 PCF sans r´ef´erences, ni objets, mais avec les listes et les tableaux.

a) [|nil|] :array(list(α)) [|λx.x|] :array(α→α) λx.x[0] :∀α.array(α)→α

λx.λy.x[0]←y:∀α.array(α)→α→void.

b) Non, le th´eor`eme de progression n’est pas exact comme pour le typage des r´ef´erences. En effet, on alet r= [|nil|]inr[0]←3 ::nil; (hdr[0])2 en ne faisant pas attention `a la g´en´eralisation des types de tableaux.

1

(2)

c) On peut adopter la mˆeme r`egle que pour les r´ef´erences. On ne g´en´eralise pas les variables de type apparaissant dans le type d’un tableau dans l’´evaluation de M danslet x=M inN. Question 5 On rajoute les exceptions `a PCF.

a) D´efinissons la classe de contextes actifs suivantes

C[ ] ::= C[ ]N |M C[ ]|C[ ] +N |M +C[ ]

| ifzC[ ]thenM elseN

| ifzP thenC[ ]elseN

| ifzP thenM elseC[ ]

Alors les r´eductions sont C[fail]→ fail et try fail withM → M et tryV with M → V quand V 6=fail.

b) Rajouter les exceptions `a l’espace des valeurs. Donner la s´emantiquebigsteppour`tryM with N =V.

c) Donner sa r`egle de typage, ainsi que celle pour le termefail.

d) Quelles modifications doit-on faire `a l’algorithme W pour tenir compte de cette nouvelle instruction.

e) Supposons quefail prenne un argument. Ainsi M, N, P ::= . . .

| failM exception lev´ee

| tryM withN gestionnaire de l’exception

Alors l’instruction try M with λx.N renvoie N[x\V] si failV est ex´ecut´e dans M. Recom- mencer les questions pr´ec´edentes avec cette nouvelle construction.

f) Donner une piste pour construire un syst`eme de type plus robuste?

Question 6 Codage des entiers unaires avec les objets dans PCF (sans les constantesnenti`eres).

a) On repr´esente les entiers par un objet `a trois champs:

0 = {est zero=true; pred =ζx. . . .; succ=ζx. . . .} n+1 = {est zero=false; pred =ζx. . . .; succ=ζx. . . .}

Donner une expression possible pour les deux m´ethodespred etsucc donnant le pr´ed´ec´esseur et le successeur de tout entier naturel. (On posera true = 0 et true = 1 pour obtenir des termes de corrects de PCF en l’absence de bool´eens).

b) Donner un codage (toujours dans les objets non-modifiables) qui minimise le nombre d’objets cr´e´es.

2

Références

Documents relatifs

Une étude statistique sur ces poissons de la zone 1 a montré que la variable aléatoire X suit une loi normale de moyenne µ et d’écart type σ = 30.. Par lecture graphique, donner

On appelle prix d’´ equilibre d’un produit, le prix pour lequel l’offre et la demande sont ´ egales.. Estimer, au centime pr` es, le prix

On d´ esigne par X la variable al´ eatoire qui donne le nombre de salari´ es malades une semaine donn´ ee.. (a) Justifier que la variable al´ eatoire X suit une loi binomiale dont

Il a commenc´ e par envisager de lui donner une forme carr´ ee mais, finalement, il a choisi d’augmenter un cˆ ot´ e de 4 m` etres et de diminuer l’autre cˆ ot´ e de 2 m` etre

le temps de vol en altitude C’est le nombre de nombres dans la suite jusqu’` a atteindre un nombre plus petit que le premier terme.. Par exemple, si le premier terme est 17, le temps

Montrer qu’il existe une extension finie de Q, form´ee de nombres constructibles, sur laquelle P se factorise en produit de deux polynˆomes de degr´e 21. Un tel nombre premier

En effet, sur de tels ouverts aussi les seules applications de diff ´erentielle nulle sont les constantes, donc la d ´emontration s’ ´etend?.

S’il est conseill´ e, au sein d’un probl` eme, de traiter les questions dans l’ordre, il est ´ egalement possible de passer des questions et d’admettre leurs r´ esultats dans