Final 13/12/2016 (Paradigmas)

De Cuba-Wiki
Saltar a: navegación, buscar

Era escrito (5 personas dando el final). Era a libro abierto y constaba de 7 puntos. Pedida que las respuestas sean lo más cortas y concretas posibles (ej, media carialla). Llegabas medio justo con el tiempo.

1. Dadas:

l = 1:l

f = foldr (\x y -> 1) 0

g = foldl (\x y -> 1) 0

explicar cual es el resultado de evaluar f l y g l

2. Es correcto cambiar la regla de semántica del fix por: fix V -> V (fix V) ?

3. Extendemos el calculo lambda con el operador suma (+), que vendría a ser como un Either en Haskell. Nos dan las reglas de tipado:

\-----------------------------------\

Gamma |- in1 : sigma -> sigma + tau


\-----------------------------------\

Gamma |- in2 : tau -> sigma + tau


Gamma |- M : sigma + tau -> rho, Gamma |- N : sigma + tau -> rho

\----------------------------------------------------------------\

Gamma |- case in1 => M or case in2 => N : sigma + tau -> rho

Mostrar que problemas trae a las propiedades del sistema de tipado.

4. Mostrar con un ejemplo concreto que pasa si le quitamos a la regla de inferencia del Abs la parte de: Gamma' = Gamma - {x}

5. Dado el programa en prolog:

a(1).

a(2).

p(X,Y) :- a(Z), not(member(Z,X)), P([Z|X], Y).

p(X,X).

a. Dar la cantidad de soluciones de la consulta P([], X). (usando el arbol SLD) b. Que pasa con la cantidad de soluciones si cambiamos la 3er regla por:

  i. p(X,Y) :- a(Z), not(member(Z,X)), !, P([Z|X], Y).
  ii. p(X,Y) :- not(member(Z,X)), a(Z), P([Z|X], Y).

6. Verdadero o Falso justificando:

a. Es cierto que las clausulas {P(x,f(y)}, {P(y,y} no se pueden refutar ya que no unifican ? b. Te daban dos formulas y decian que una era la Skolem de la otra. c. Dada G la Skolem de F.

 1. Si no existe refutación para G, entonces F es válida
 2. Si existe refutación para \lnot G, entonces F es válida

7. Eran unas clases en Smalltalk, había que hacer 2 seguimientos.