UTNianos

Versión completa: [PEDIDO] Final Paradigmas de Programación 10/12/2016
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola chicos! Cómo están? Alguno tiene el final de paradigmas del día 10/12/2016?
Aprovecho para consultar por uno de los ejercicios tomados en ese final.

Inferir los tipos de las funciones:

f1 e f g = filter ((\x -> f x). elem e). map g

f2 e f g =any (f. elem e). map g

Alguno podrá darme una mano? La verdad no tengo idea y por eso me fui y no lo rendí.

Gracias!!
Hola! Aca te dejo un link con fotos del final,
Si tengo tiempo, despues intento ayudarte a resolverlo
Saludos

Final Pdep 12/10
(14-12-2016 15:45)Milton Brandes escribió: [ -> ]Hola! Aca te dejo un link con fotos del final,
Si tengo tiempo, despues intento ayudarte a resolverlo
Saludos

Final Pdep 12/10

Muchas gracias!!
Hola Agus como va?

f1 me parece que es asi:

map espera una lista que viene implicita y una funcion (g) que espera un elemento de la lista y devuelve otra cosa. Osea los ultimos dos parametros de f1 serian (a -> b) y [a]

Despues map devuelve una lista de b que la recibe filter que tiene como condicion esta funcion entre parentesis:
((\x -> f x). elem e).
Esto espera una lista de la que se fija si e es un elemento, y el booleano que devuelve esto se manda a la lambda y se le aplica f. Eso tambien devuelve un booleano que es la condicion de filtro.

Asi que b tiene que ser a su vez una lista del mismo tipo de elementos que el parametro e. Y f es una funcion que recibe un booleano y devuelve un booleano.

Y por ultimo F1 devuelve la lista de listas filtrada osea [[b]]

En resumen creo que queda asi:

e f g implicito
b -> (Bool -> Bool) -> (a -> [b]) -> [a] -> [[b]]


El f2 es parecido solo que con any en lugar de filter, osea que devuelve Bool

b -> (Bool -> Bool) -> (a -> [b]) -> [a] -> Bool
Buenas puse la funcion en el winhugs y me dio esto, cual seria lo correctoo??

(Foldable t, Eq a ) => a ->(Bool->Bool) -> (a1-> t a ) -> [a1] -> [t a ]
(15-12-2016 00:27)dieee91 escribió: [ -> ]Buenas puse la funcion en el winhugs y me dio esto, cual seria lo correctoo??

(Foldable t, Eq a ) => a ->(Bool->Bool) -> (a1-> t a ) -> [a1] -> [t a ]

No se y no quiero saberlo jaja

Ahora que lo pienso el primer parámetro que yo puse como 'b' si tiene que ser un Eq para poder pasarselo a elem. Pero lo de Foldable ni idea. Yo nunca lo vi en mi cursada.
(15-12-2016 00:53)damianvc31 escribió: [ -> ]
(15-12-2016 00:27)dieee91 escribió: [ -> ]Buenas puse la funcion en el winhugs y me dio esto, cual seria lo correctoo??

(Foldable t, Eq a ) => a ->(Bool->Bool) -> (a1-> t a ) -> [a1] -> [t a ]

No se y no quiero saberlo jaja

Ahora que lo pienso el primer parámetro que yo puse como 'b' si tiene que ser un Eq para poder pasarselo a elem. Pero lo de Foldable ni idea. Yo nunca lo vi en mi cursada.

Hola chicos!! Claro, yo hice lo mismo y nunca vi "Foldable" No se qué es!
Gracias por las respuestas!
Lo del foldable creo que se refiere a que son listas. Comparando las dos posibilidades:

b -> (Bool -> Bool) -> (a -> [b]) -> [a] -> [[b]]

(Foldable t, Eq a ) => a ->(Bool->Bool) -> (a1-> t a ) -> [a1] -> [t a ]

Acá lo explican un poco:
Spoiler: Mostrar
A Foldable type is also a container. The class does not require Functor superclass in order to allow containers like Set or StorableVector
that have additional constraints on the element type.
But many interesting Foldables are also Functors.
A foldable container is a container with the added property that its items can be 'folded' to a summary value.
In other words, it is a type which supports "foldr". Once you support foldr, of course, it can be turned into a list, by using toList = foldr (=) []. This means that all Foldables have a representation as a list, but the order of the items may or may not have any particular significance.
.

Igual no creo que sea necesario porque en la cursada no se ve eso. Lo que sí tiene que ir es el Eq a.
Gracias!

Alguno tiene idea como hacer la parte de Prolog?

Como hago mas "declarativa" esa funcion? No tengo idea wallwallwallwallwall

[Imagen: 07F.png]
(15-12-2016 14:00)naitsrich escribió: [ -> ]Gracias!

Alguno tiene idea como hacer la parte de Prolog?

Como hago mas "declarativa" esa funcion? No tengo idea wallwallwallwallwall

[Imagen: 07F.png]

Yo lo hice así:

predicado2(P, Lista):- esAlgo(P,_), findall(X, esUnoUOtro(P,X), Lista).
esUnoUOtro(P, X):- algo(P, X) | otraCosa(P,X).

esAlgo(P,_):- algo(P,_).
esAlgo(P,_):- otraCosa(P,_).

No se si está bien, pero se comporta igual. Y armo solo una lista con los elementos que cumplan con los functores algo y otra cosa.
Y delego en una función auxiliar.
URLs de referencia