Dica para inferência do tipo SML

Eu sou novo no SML e estou tentando praticar na referência de tipo SML. Estou tentando deduzir os tipos abaixo:

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

Eu acho que as soluções para os quatro primeiros são:

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

Mas estou um pouco confuso sobre o último. Existe alguma dica para deduzir o último tipo?

Muito obrigado.

questionAnswers(1)

yourAnswerToTheQuestion