Final 03/03/2022 (Paradigmas)

De Cuba-Wiki

Funcional[editar]

1. Definir fold sobre árbol binario

2. Usar ese fold para definir

truncar10:: ArbolBinario Int -> ArbolBinario Int

Ejemplos:

truncar10 (Hoja n) = Hoja n
truncar10 (Bin 1 (Hoja 2) (Hoja 5)) = Hoja (1+2+5)
truncar10 (Bin 4 (Hoja 5) (Hoja 2)) = (Bin 4 (Hoja 5) (Hoja 2))

Es decir, agrupa recursivamente nodos que con sus hijos suman menos de 10

Cálculo Lambda[editar]

3. Se puede definir un árbol binario infinito? Qué pasaría cuando le aplicas truncar10

4. Por qué correctitud = progreso + preservación? (intuición)

5. Pasa algo si se cambia el orden de las reglas de evaluación de la aplicación? (primero se evalúa el parámetro a un valor, después la función a un valor, después se hace la aplicación)

6. Qué propiedad se pierde al agregar referencias? Qué pasa con la propiedad de progreso?

Lógico[editar]

7. Explicar la regla de resolución de primer orden

8. Se puede unificar en un paso?

{P(a, f(X)), P(X,Y)}   {~P(a,X)}

9. Soluciones de s(X) en este programa con cut:

s(X):- p(X).
s(0).

p(X) :- q(X).
p(1).

q(X):- r(X),!.
q(2).

r(3).
r(4).

Cálculo Sigma[editar]

10. Se pierde o gana alguna propiedad al traducir cálculo lambda en cálculo sigma?

11. Se puede evaluar una función sin pasarle un parámetro?