Diferencia entre revisiones de «Final 13/12/2016 (Paradigmas)»

De Cuba-Wiki
(Final 13/12/16)
 
Sin resumen de edición
Línea 1: Línea 1:
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.
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:
  1. Dadas:


l = 1:l
l = 1:l
Línea 11: Línea 11:
explicar cual es el resultado de evaluar f l y g l
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) ?
  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:
  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:


\-----------------------------------\
\-----------------------------------\
Línea 35: Línea 35:
Mostrar que problemas trae a las propiedades del sistema de tipado.
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}
  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:
  5. Dado el programa en prolog:


a(1).
a(1).
Línea 52: Línea 52:
   ii. p(X,Y) :- not(member(Z,X)), a(Z), P([Z|X], Y).
   ii. p(X,Y) :- not(member(Z,X)), a(Z), P([Z|X], Y).


6. Verdadero o Falso justificando:
  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 ?
a. Es cierto que las clausulas {P(x,f(y)}, {P(y,y} no se pueden refutar ya que no unifican ?
Línea 60: Línea 60:
   2. Si existe refutación para \lnot 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.
  7. Eran unas clases en Smalltalk, había que hacer 2 seguimientos.

Revisión del 16:59 27 feb 2017

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.