Final 03/03/2022 (Paradigmas)
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?