Primer prueba 2023 - uncurry

Primer prueba 2023 - uncurry

de Facundo Martin Barboza Fernandez -
Número de respuestas: 2

Buenas, 

Estoy teniendo problemas en entender como se aplica la funcion uncurry a flip en este caso y luego aplicarla de nuevo. No estoy pudiendo ver como llegar a ese tipo general. Queria saber si me lo podian aclarar.

Desde ya gracias,

Saludos 

En respuesta a Facundo Martin Barboza Fernandez

Re: Primer prueba 2023 - uncurry

de Gustavo Chalela Nuñez -
Buenas: por lo que entiendo, el tipo del flip es
flip::(a->b->c)->b->a->c
Dada una función (entre paréntesis, devuelve una función con los parámetros intercambiados, por eso el b aparece primero que la a.
Teniendo en cuenta que el tipo del uncurry es
uncurry::(a->b->c)->(a,b)->c
O sea, dada una función currificada (a->b->c), devuelve una función cuyos parámetro son pares ordenados: (a,b)
Entonces el uncurry flip sería:
uncurry flip:: ((a->b->c , b) , a) -> c
O sea, al tipo de flip le hace un uncurry primero y quedaría así: ((a->b->c) , b)->a->c
Y a esto último le hace otro uncurry poniendo entre paréntesis todo lo que va desde el principio hasta la a
Eso entendí yo. Espero haber ayudado!
Saludos!
Gustavo