Dudas Parcial 2018 [Ejercicio 9]

Dudas Parcial 2018 [Ejercicio 9]

de Lucas Hernan Bruzzone Rodriguez -
Número de respuestas: 3


Buenas. Tengo dudas con el ejercicio 9 del parcial del año 2018

Ejercicio 9

9. Dada la siguiente definicion: uc = uncurry curry
¿Cual de las siguientes afirmaciones es correcta?

  • (a) uc (uncurry (&&), True) False
  • (b) uc ((&&), True) False
  • (c) uc (uncurry (&&)) (True, False)
  • (d) La definici´on de uc es incorrecta

Los tipos de uncurry y curry son:
uncurry:: (a->b->c) -> a -> b -> c
curry::(a,b) -> c) -> a -> b -> c

La opcion correcta marcada es la (a). No logro comprender por que esto es asi.

La funcion uncurry recibe una funcion y una tupla, y la funcion curry una funcion y 2 elementos.

Agregando la definicion de uc en (a), tenemos:
uncurry curry (uncurry (&&), True) False

No logro ver como uncurry y curry reciben los argumentos correctos (por ejemplo tuplas en el caso de uncurry) para que esta solucion sea correcta.

En respuesta a Lucas Hernan Bruzzone Rodriguez

Re: Dudas Parcial 2018 [Ejercicio 9]

de Marcos Viera - InCo -

Cuidado, tenés mal el tipo de uncurry, que es:

uncurry :: (a -> b -> c) -> (a, b) -> c

El tipo de uc te queda:

uc :: ((a, b) -> c, a) -> b -> c

El tipo de uncurry (&&) the queda:


uncurry (&&) :: (Bool, Bool) -> Bool

Por lo que tanto a, b y c serían Bool en el tipo de uc para la aplicación de a).

En respuesta a Marcos Viera - InCo

Re: Dudas Parcial 2018 [Ejercicio 9]

de Vicente Martin Ferreyra Arrillaga -
buenas, no estoy entendiendo los tipos de uc y de uncurry (&&). Haciendo el ejercicio llegamos a que el tipo de uc es el siguiente:

uc :: ((a, b) -> c) -> (a, b) -> c

No vemos como se pasaria la a para adentro de la tupla