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

De Cuba-Wiki
Sin resumen de edición
(Se ha deshecho la revisión 10961 de Agusaldasoro (disc.))
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 17:01 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.