Hola, capaz te ayude pensarlo de la siguiente forma:
uncurry::(x->y->z)->(x,y)->z
curry::((a,b)->c)->a->b->c
y por lo tanto curry::((a,b)->c)->a->(b->c)
Como lo que querés ahora es aplicar uncurry a curry, te queda claro que lo que "entra" en x tendrá el tipo ((a,b)->c), el tipo y será a y el tipo z será (b->c).
Entonces razonando así, el tipo de uc será (x,y)->z (el tipo de la función no currificada que devuelve uncurry) con x, y, z siendo los tipos que dije antes.
Entonces:
uc::((a,b)->c, a) -> (b->c)
Espero sirva, saludos.
Son bienvenidas las correcciones/críticas a la forma de proceder.