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
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ó
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
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
β
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
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ó.
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
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)
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
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
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
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)
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
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
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)
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β
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
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
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
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)
β
β
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
PREGUNTES