21
Tipus Formes Normals i Pas de Paràmetres David Moreno Oliveras

Tipus Formes Normals i Pas de Paràmetres

  • Upload
    zita

  • View
    81

  • Download
    0

Embed Size (px)

DESCRIPTION

Tipus Formes Normals i Pas de Paràmetres. David Moreno Oliveras. Ordres de Reducció. L’ordre de Reducció és l’estratègia que indica quin redex cal seleccionar a cada pas de la reducció - PowerPoint PPT Presentation

Citation preview

Page 1: Tipus Formes Normals i Pas de Paràmetres

Tipus Formes Normals i Pas de Paràmetres

David Moreno Oliveras

Page 2: Tipus Formes Normals i Pas de Paràmetres

Ordres de Reducció L’ordre de Reducció és l’estratègia

que indica quin redex cal seleccionar a cada pas de la reducció

Cal buscar un redex en l’expressió, reduïr-lo i repetir aquest procés fins que l’expressió estigui en Forma Normal

Forma Normal == idea “Fi Còmput” mentre hagi_redex reduïr un_redex

Page 3: Tipus Formes Normals i Pas de Paràmetres

Forma Normal (I) No totes les expressions ténen

Forma NormalNo està en Forma Normal

Si intentem β – Reduïr :

EL CÒMPUT DE L’EXPRESSIÓ NO ACABA I NO TÉ UNA FORMA NORMAL

...No està en Forma Normal

β

Page 4: Tipus Formes Normals i Pas de Paràmetres

Forma Normal (II) Church-Rosser mitjançant un Teorema

afirma i demostra que si una expressió té Forma Normal aquesta és única excepte

α-equivalències Sempre podem trobar la Forma Normal

d’una expressió si existeix? En quin ordre fem les Reduccions ?

Ordre Normal Ordre Aplicatiu

Page 5: Tipus Formes Normals i Pas de Paràmetres

Ordre Aplicatiu – CBV (I) Seleccionar el redex més INTERN(el més

aniuat) i més a l’esquerra. Estratègia coneguda com pas de

paràmetres per valor (call by value). Es redueixen primer els paràmetres de

la funció. Es redueix l’argument de la funció abans d’avaluar-se. Quan es coneixen els valors ens substitueixen a l’equació de la funció.

PROBLEMA : Molts cops fan reduccions innecessàries per calcular valor de l’expressió.

Page 6: Tipus Formes Normals i Pas de Paràmetres

Ordre Aplicatiu – CBV (II) Exemple 1 : zero :: Integer -> Integer

zero x = 0

zero (10*4) per operador (*) = zero (40) per definició de zero = 0

Exemple 2 : doble :: Integer -> Integer

doble x = x+x

doble (doble 3) per definició de doble = doble (3+3) per definició de l’operador (+) = doble (6) per la definició de doble = 6+6 per l’operador (+)

= 12

Page 7: Tipus Formes Normals i Pas de Paràmetres

Seleccionar el redex més EXTERN(el menys aniuat) i més a l’esquerra.

Estratègia coneguda com pas de paràmetres per nom o referència (call by name).

Es passen com a paràmetres expressions en comptes de valors. Es redueix primer l’aplicació de la funció.

És Normalitzant : Si l’expressió té forma normal, seguint aquesta estratègia segur que es troba la forma normal (Teorema d’estandarització)

Ordre Normal – CBN (I)

Page 8: Tipus Formes Normals i Pas de Paràmetres

Ordre Normal – CBN (II) Exemple : doble :: Integer -> Integer

doble x = x+x

doble (doble 3) per definició de doble = (doble 3)+ (doble3) per definició de doble = (3+3) + (doble 3) per l’operador (+) = 6 + (doble 3) per definició de doble

= 6 + (3+3) per l’operador (+) = 6 + 6 per l’operador (+) = 12 6 reduccions

Page 9: Tipus Formes Normals i Pas de Paràmetres

Ordre Normal / Ordre Aplicatiu

Teorema Estandarització : Si té Forma Normal la trobarem aplicant reducció d’Ordre Normal

Ordre Normal : (λx.y) (λx.xx) (λx.xx) y

Ordre Aplicatiu (λx.y) (λx.xx) (λx.xx) (λx.y) (λx.xx) (λx.xx)

(λx.y) (λx.xx) (λx.xx) ...

β

β β

β Seqüència infinita de valors

Page 10: Tipus Formes Normals i Pas de Paràmetres

Avaluació Lazy o Lenta (I) Consisteix en utilitzar pas per nom i

recordar els valors dels arguments ja calculats per evitar recalcular-los.

També s’anomena pas de paràmetres per necessitat (call by need)

Molt útil per treballar amb llistes infinites.

Aquest tipus d’avaluació l’utilitza Haskell

Page 11: Tipus Formes Normals i Pas de Paràmetres

Exemple : doble (doble 3) per la definició de doble

a + a on a = doble 3 per la definició de doble a + a on a = b + b on b = 3 per l’operador (+) a + a on a = 6 per l’operador (+)

12

4 reduccions

Avaluació Lazy o Lenta (II)

Page 12: Tipus Formes Normals i Pas de Paràmetres

Head Normal Form (I) En λ-càlcul els termes poden ser:

x : Variable M N : Aplicació λx.M : Abstracció

M pot ser : HEAD NORMAL FORM (HNF) si té la forma :

Es pot fer un Head Reduction (reducció reiterada del redex de capçalera)

Redex capçalera

Page 13: Tipus Formes Normals i Pas de Paràmetres

Head Normal Form (II)Formalitza l’ús parcial d’objectes

(funcions,llistes) infinits.

Ex : SI (HNF) x, λx.y((λx.x x)(λx.x x))

NO (HNF) λy.(λx.a) y admet head reduction

λy.a

Page 14: Tipus Formes Normals i Pas de Paràmetres

Head Reduction determina de forma única una seqüència de termes (aquesta seqüència pot acabar o no)

Reduïnt un terme M a la seva HNF obtenim una quantitat finita de la seva informació Ex : ceros´ = Y (par 0) ceros´= (0,(0,(0....)))

ceros´* par 0 ceros´ = (λxyf.f x y) 0 ceros´ * λf.f 0 ceros´ (HNF) = λf.f 0 (λf.f 0 ceros´)

* ... primero ceros´* 0

computacions finites d’un valor infinit primero (segundo ceros´)* 0

Head Normal Form (III)

Page 15: Tipus Formes Normals i Pas de Paràmetres

Forma Normal / Head Normal Form

Un terme en Forma Normal també està en HNF

Un terme pot estar en HNF i no estar en Forma Normal

Ex: λx.x (λz.zb) SI en HNF (no té redex

capçalera) NO es una Forma Normal

λx.x b Forma Normalβ

Page 16: Tipus Formes Normals i Pas de Paràmetres

Un terme pot no tenir Forma Normal i tampoc HNF Ex: (λx.xx) (λx.xx)

Un terme pot tenir vàries HNF Ex: (λx. (λz.z)x) ((λz.z) (λz.z))

HNF : λx.x((λz.z) (λz.z)) HNF : λx.x(λz.z)

Forma Normal / Head Normal Form

Page 17: Tipus Formes Normals i Pas de Paràmetres

Weak Head Normal Form Inici : Wadsworth en 1976 i permet,

entre altres coses, distinguir certs còmputs que no acaben.

WHNF : (són termes sense redex extern) Constant λx.E f E1 E2 ...En si f és una constant o funció

d’aritatn>=0

Si un terme està en HNF també està en WHNF

Page 18: Tipus Formes Normals i Pas de Paràmetres

Head Normal Form / Weak Normal Form (I)

En HNF s’avaluen les λ-abstraccions internes i en WHNF no s’avaluen. Ex : λx.(λz.z) M

NO està en HNF SI està en WHNF (no té redex extern)

Ex2 : λx.(λy.λx.+ x y) x SI WHNF i no és necessari reduïr redexmés intern. Procés acaba

únic redex PROBLEMA : DUPLICITAT IDENTIFICADOR

Page 19: Tipus Formes Normals i Pas de Paràmetres

Nomès quan l’expressió és aplicada a un argument cal reduïr per Ordre Normal(redex més extern de més a l’ esquerra) i obtenir la WHNF.

Ex3 : (λx.(λy.λx.+ x y) x) 4 NO WHNF

(λy.λx.+ x y) 4

λx.+ x4 SI WHNF

EVITEM EL PROBLEMA DE DUPLICITAT IDENTIFICADOR PERQUÈ ES REDUEIX

EL REDEX MÉS EXTERN, QUE NO TÉ VARIABLES LLIURES

Head Normal Form / Weak Normal Form (II)

β

β

Page 20: Tipus Formes Normals i Pas de Paràmetres

WHNF i Paràmetres Al aplicar reduccions a (λ.N)M :

Ordre Normal (call by name) : Poden redüïr (λ.N) M sense haver de

reduïr M prèviament a WHNF Ordre Aplicatiu (call by value) : Prèviament cal reduïr l’expressió M a WHNF abans de reduïr (λ.N) M

Page 21: Tipus Formes Normals i Pas de Paràmetres

PREGUNTES