Vous êtes sur la page 1sur 4

Universidad CAECE Paradigmas de Lenguajes de Programacin

PRCTICA 4 Modos de evaluacin - Streams Redes de procesos


1. Evaluar las siguientes expresiones --usando las definiciones correspondientes-- en modos eager por un lado y lazy por otro, explicando los criterios y anomalas presentes en cada caso (las lneas con signos ? al comienzo son evaluaciones de expresiones en base a las definiciones anteriores)

i) ? member ! "!, #, $% ii) cuadrado x & x'x ? cuadrado (!(#')) iii) ciclo & append "1, $% ciclo ? ciclo iv) ? tomar # ciclo v) ? foldr (() * "#, +,*, -% vi) or (.rue,.rue) & .rue or (.rue,/alse) & .rue or (/alse,.rue) & .rue or (/alse,/alse) & /alse ? foldr (curry or) .rue "not /alse, cabeza (resto ".rue%)% vii) or .rue x & .rue or /alse x & x ? foldr or .rue "not /alse, cabeza (resto ".rue%)% viii) or (.rue,x) & .rue or (/alse,x) & x ? foldr (curry or) .rue "cabeza (resto ".rue%), not /alse% $. i) Explicar 0u1 ocurre en la interface usuario-motor de evaluaci2n durante la evaluaci2n, si el lengua3e funcional posee modo de evaluaci2n eager. ii) 4dem si el lengua3e posee modo de evaluaci2n lazy. iii) 56u1 diferencia puede llegar a existir en la evaluaci2n de una expresi2n infinita --en la interface-- si el modo de evaluaci2n del lengua3e es eager por un lado, y lazy por otro? iv) 57e 0u1 forma un lengua3e funcional con modo de evaluaci2n eager muestra el resultado final de una evaluaci2n? 58 uno con modo de evaluaci2n lazy? 9ustificar. :. 7efinir una funci2n de dos formas distintas tal 0ue al ser evaluada dentro de una aplicaci2n por un lengua3e con modo de evaluaci2n lazy, en el primer caso se comporte como si el lengua3e fuera lazy y en el segundo como si el lengua3e fuera eager (para la misma expresi2n original en ambos casos). ;enerar la lista de los primeros mil n<meros perfectos. =n n<mero natural n es perfecto si la suma de sus divisores menores estrictos 0ue 1l es igual a n. >er de 0u1 forma se puede realizar me3or usando evaluaci2n lazy. 4ntentar programarla usando funciones de orden superior. ?ea una funci2n 0 declarada y definida as
Pgina 1

!.

#.

Universidad CAECE Paradigmas de Lenguajes de Programacin

0 4nt @ool @ool 0 a b & iff b .rue (a&&$) 5AuBl es el valor retornado por la expresi2n ? foldr 0 /alse "$,#,),!,C% asumiendo 0ue iff estB declarado y definido as iff E0 a &D @ool a a a iff c x y E x && y &x E otFerGise & if c tFen x else y en una implementaci2n eager y en una implementaci2n lazy? 9ustificar. +. Evaluar en modo eager y en modo lazy (indicando en cada reducci2n la expresi2n reducida) la siguiente expresi2n ? member (1(1) (map ('$) naturales) donde HnaturalesI es la expresi2n "*, 1, $, :, !, ...% C. Evaluar en forma lazy la siguiente expresi2n ? igJong "":,!%, "C%, "),*,*%% y explicar en 0u1 difiere con la evaluaci2n eager de la misma expresi2n. (Ksumir 0ue las aplicaciones de long y de ultimo provocan una sola reducci2n). El reductor igJong fue definido anteriormente en la prBctica :.

Lota -.

7ado el siguiente programa para calcular la longitud de una lista long & (Mf x case x of "% * (N ys) 1 ( f ys) long Evaluar la expresi2n ? long "#,:% usando evaluaci2n eager por un lado y lazy por otro.

).

7ada la siguiente definici2n p & 1 (map ('$) p) i) Evaluar la expresi2n ? tomar : p


Pgina 2

Universidad CAECE Paradigmas de Lenguajes de Programacin

usando evaluaci2n eager por un lado y lazy por otro, indicando las sustituciones de variables de cada reducci2n Fasta llegar al resultado final. 56u1 representa la lista p? ii) 5A2mo sera la OgrBficaP de la red de procesos relacionada con la definici2n de p? 1*. ;enerar de dos formas distintas a la lista infinita (stream) de n<meros enteros lc 0ue represente la siguiente sucesi2n --lineal congruencial-- (para dados ini, a, c y m) xo & ini xn(1 & (a ' xn ( c) mod m 11. 7efinir el stream fib (lista de los valores de la sucesi2n de /ibonacci) usando redes de procesos. Qealizar versiones de redes de uno, dos y tres procesos. 1$. i) 7efinir (renombrando otros tipos) a la funciones de /loat en /loat (mBs concretamente con dominio en el intervalo (-1,1)) usando el concepto de la representaci2n de funciones usando la serie de potencias asociada (de .aylor) para a0uellas con valor de x* & * y cuyo valor de la derivada i-1sima aplicada a x * (*) se repite cclicamente a medida 0ue se incrementa el valor de i. Klgunos e3emplos pueden ser ex & 1 ( x ( x$,$ ( x:,($':) ( x!,($':'!) ( R cos x & 1 - x$,$ ( x!,($':'!) - R sen x & x - x:,($':) ( x#,($':'!'#) - R Aada t1rmino de la serie se caracteriza por poseer un valor de potencia aplicado a la variable del dominio y un valor real (/loat) por el 0ue se multiplica el valor del resultado de esa potenciaci2n. 7efinir la funci2n integrarTerm, 0ue dado un t1rmino de una serie de .aylor asociado a una funci2n, devuelva otro t1rmino 0ue represente la integral del t1rmino dado (con el valor constante sumado igual a *). 7efinir funcEx (funci2n exponencial con la estructura de funci2n antes especificada) usando redes de procesos, donde uno de los procesos representa a la funci2n integrar.erm. 7efinir funcCos (funci2n coseno) usando redes de procesos, de una forma similar a la anterior. 7efinir func!en (funci2n seno) usando funcAos. 7efinir func!enCos (funciones seno y coseno) usando redes de procesos y sin usar func?en y funcAos. 56u1 estructura se puede utilizar para representar a la definici2n de dos funciones OsimultBneasP a la vez?

ii) iii) iv) v) vi)

1:. i) 7ada la siguiente definici2n de la funci2n listaSares explicar informalmente por 0u1 no es correcta. Esta funci2n recibe dos listas (posiblemente streams) y devuelve una lista de pares 0ue representa el producto elemento a elemento de las dos listas de entrada. pegar ""a%% "a% pegar & flat

Pgina "

Universidad CAECE Paradigmas de Lenguajes de Programacin

listaSares ("a%, "b%) "(a,b)% listaSares (xs,ys) & pegar (map (Mi (map (M3 (i, 3)) ys)) xs) ii) Todificar la funci2n pegar para poder solucionar el problema. =sar intercalar.

Pgina #

Vous aimerez peut-être aussi