Final 14/12/2023 (Paradigmas)

De Cuba-Wiki

1)Haskell: Ejercicio idéntico a otro final. Te dice que hay un tipo de datos recurisvo: D a Tal que foldD::(a - >b - >) -> D a -> b También te dice que tensa un elemento unD:: D Int Y te da: foldD (+) unD Decir si es verdadero o falso que: la expresión tipa pero independientemente de como se defina unD, nunca termina.

2) También, ejercicio similar ya tomado Cambian la regla E-PredSucc por una qué hace: pred(succ(N)) -> N Decir si se pierden alguna, ni una o ambas propiedades: I)Preservabilidad I) Determinismo

3) De subtipado con referencias: let f: Ref (Nat -> { l: Nat }) = Ref (\x:Nat. {}) in 0 Determinar si typechequea asumiendo que la regla de Ref es contravariante respecto del tipo

4) Inferencia/MGU: sutil diferencia con uno tomado en otro final pero que cambia mucho : Sea S un MGU de (C U { sigma1 =.= sigma2}) Verdadero o falso : a) S es un unificado de C b) S es un MGU de C

5) Sea P un conjunto de clausulas de definición y G un goal, y A el árbol SLD de Prolog. Decir verdadero o falso. a) A encuentra (o algo así) todas las refutacion es lineales de P U G b) A encuentra todas las refutaciones SLD de P U G.

6) Dado un programa de Prolog, del cual podemos asumir que usamos solo los operadores extra lógicos, cut y not, pero podes usar todos los que quieras si querés. Decir verdadero o falso: a) si p(a) tiene éxito => a es solución de p(X) b) si a es solución de p(X) => p(a) tiene éxito. Podes armar el programa que quieras, agregar otras clausulas etc.

7) clásico ejercicio de JavaScript en el que te da un código y tenes que ir diciendo que dan determinadas variables. Exactamente igual al ejercicio que tomo en el final escrito que esta en el grupo.