20-12-2015, 13:58
12-01-2016, 18:29
Alguien tiene la resolucion de este final?
28-01-2016, 10:08
Me sumo al pedido!
21-02-2016, 05:37
Tengo dudas en cuanto a la parte C, alguno sabe como resolver la parte 1.b,c y 2?
26-07-2016, 15:30
Hola, aca resolvi la parte A pero no estoy seguro si esta bien. Que alguien más lo resuelva por favor.
link
link
29-07-2016, 00:05
Buenas adjunto la parte B y C.
Aclaro que acepto correcciones, tengo que dar el final el sabado.
Parte B)
1) F en el funcional no hay asignación destructiva, ni efecto colatera, pero si se podia hacer una funcion donde una persona juegue un juego y mostrar como queda, despues del mismo.
2) Tipo
fun :: Ord a => Int -> (Int ->[a] -> Bool) -> (a -> a) -> a -> [a] -> [a]
3)
fun 1 (<) (+1) 10 [1..] no se evalua por errores de tipo ya que espera tipo a y recibe tipo [a]
fun 1 (\x y -> x<0) (+1) 10 [1..] se evalua y termina adecuadamente, entra por el otherwise y retorna [1]
fun 1 (\x y -> x>0) even 10 [1..] no se evalua por errores de tipo ya que even devuelve un bool y espera un tipo a
fun 1 (\x y -> x>0) (+1) 10 [1..] se evalua pero no termina retorna [2,3,4,5,6,7,8,9,10 pero no llega a finalizar ya que no termina nunca de evaluar dentro de la funcion lampda fun 1 (\x y -> x>0) even 10 [1..] donde y seria un valor de la lista.
fun 1 no se evalua por error de tipo ya que faltan parametros entre ellos la lista. (aca no se bien si es eso u otra cosa).
Parte C)
1) a) F no se hace uso de Polimorfismo ya que no es optimo el uso de todoslosmetroscasa/1 y todoslosmetrodepartamento/1, donde si estuviese bien utilizado el polimorfismo la misma funcion todoslosmetros/1 serviria para ambos casos, delegando la implementacion de cada caso.
b) F no son inversibles ya que el findall no es inversible y no hay unificacion que lo haga inv, unificando los metros.
c) Aca tenia muchas dudas porque es declarativa, aunque se podria delegar el union/3 y el max_member/2 en expresiones mas claras. (No se bien como contestar estas preguntas me parecen super ambiguas.)
2) propiedadMasGrande(Metros) :- susMetros(Metros), todosLosMetros(Viviendas), max_member(Metros, Viviendas).
todosLosMetros(Viviendas) :- findall(Metros,susMetros(Metros),Viviendas).
susMetros(Metros) :- propiedades(_,_,casa(Metros)).
susMetros(Metros) :- propiedades(_,_,departamento(_,Metros)).
La Parte A me quedo casi igual que la de alan.
Saludos
Andrés
Aclaro que acepto correcciones, tengo que dar el final el sabado.
Parte B)
1) F en el funcional no hay asignación destructiva, ni efecto colatera, pero si se podia hacer una funcion donde una persona juegue un juego y mostrar como queda, despues del mismo.
2) Tipo
fun :: Ord a => Int -> (Int ->[a] -> Bool) -> (a -> a) -> a -> [a] -> [a]
3)
fun 1 (<) (+1) 10 [1..] no se evalua por errores de tipo ya que espera tipo a y recibe tipo [a]
fun 1 (\x y -> x<0) (+1) 10 [1..] se evalua y termina adecuadamente, entra por el otherwise y retorna [1]
fun 1 (\x y -> x>0) even 10 [1..] no se evalua por errores de tipo ya que even devuelve un bool y espera un tipo a
fun 1 (\x y -> x>0) (+1) 10 [1..] se evalua pero no termina retorna [2,3,4,5,6,7,8,9,10 pero no llega a finalizar ya que no termina nunca de evaluar dentro de la funcion lampda fun 1 (\x y -> x>0) even 10 [1..] donde y seria un valor de la lista.
fun 1 no se evalua por error de tipo ya que faltan parametros entre ellos la lista. (aca no se bien si es eso u otra cosa).
Parte C)
1) a) F no se hace uso de Polimorfismo ya que no es optimo el uso de todoslosmetroscasa/1 y todoslosmetrodepartamento/1, donde si estuviese bien utilizado el polimorfismo la misma funcion todoslosmetros/1 serviria para ambos casos, delegando la implementacion de cada caso.
b) F no son inversibles ya que el findall no es inversible y no hay unificacion que lo haga inv, unificando los metros.
c) Aca tenia muchas dudas porque es declarativa, aunque se podria delegar el union/3 y el max_member/2 en expresiones mas claras. (No se bien como contestar estas preguntas me parecen super ambiguas.)
2) propiedadMasGrande(Metros) :- susMetros(Metros), todosLosMetros(Viviendas), max_member(Metros, Viviendas).
todosLosMetros(Viviendas) :- findall(Metros,susMetros(Metros),Viviendas).
susMetros(Metros) :- propiedades(_,_,casa(Metros)).
susMetros(Metros) :- propiedades(_,_,departamento(_,Metros)).
La Parte A me quedo casi igual que la de alan.
Saludos
Andrés
01-08-2016, 15:21
Se que ha pasado bastante de este final, pero como estoy preparandome para el final, empece por este y hay un par de cosas para la parte B que lo rewsolvi distinto..
Estas son mis respuestas para las funciones..
fun 1 (<) (+1) 10 [1..] --- Error de tipo, porque el (<) espera un valor para evaluar y no una lista.. :t (<) => a -> a -> Bool
fun 1 (\x y -> x<0) (+1) 10 [1..] se evalua y termina adecuadamente, entra por el otherwise y retorna [1]
fun 1 (\x y -> x>0) even 10 [1..] se evalua pero no termina, porque la salida por la primera guarda resulta una lista infinita.. [False,True,False,True..]
fun 1 (\x y -> x>0) (+1) 10 [1..] se evalua pero no termina.. idem anterior, es una lista infinita.. [2,3,4,5,6,7,8,9,10,...
fun 1 --- se evalua y termina adecuadamente, ya que es una funcion parcialmente aplicada..
Cualquier cosa me corrigen!!
Saludos!!
Estas son mis respuestas para las funciones..
fun 1 (<) (+1) 10 [1..] --- Error de tipo, porque el (<) espera un valor para evaluar y no una lista.. :t (<) => a -> a -> Bool
fun 1 (\x y -> x<0) (+1) 10 [1..] se evalua y termina adecuadamente, entra por el otherwise y retorna [1]
fun 1 (\x y -> x>0) even 10 [1..] se evalua pero no termina, porque la salida por la primera guarda resulta una lista infinita.. [False,True,False,True..]
fun 1 (\x y -> x>0) (+1) 10 [1..] se evalua pero no termina.. idem anterior, es una lista infinita.. [2,3,4,5,6,7,8,9,10,...
fun 1 --- se evalua y termina adecuadamente, ya que es una funcion parcialmente aplicada..
Cualquier cosa me corrigen!!
Saludos!!