Sugerencia para la inferencia de tipo SML

Soy nuevo en SML y estoy tratando de practicar en la referencia de tipo SML. Estoy tratando de deducir los siguientes tipos:

a)fun add42 x =x+42
b)fun comp F G = let fun C x = G(F(x)) in C end
c)fun compA42 x = comp add42 x
d)val foo = compA42 add42
e)fun compCompA42 x = comp compA42 x

Creo que las soluciones para los primeros cuatro son:

a)int->int
b)(a->b)->(b->c)->a->c
c)(int->a)->int->a
d)int->int

Pero estoy un poco confundido sobre el último. ¿Hay alguna pista para deducir el último tipo?

Muchas gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta