Gostaria de ajuda para entender como a inferência de tipo afeta o código a seguir, que vem de uma pergunta anterior (que, após algumas reflexões, simplifiquei para o seguinte):
type 'a result =
| Succ of 'a
| Fail
let first f = function
| Succ c -> let res = f c in Succ res
| fail -> fail
let second f = function
| Succ c -> let res = f c in Succ res
| Fail -> Fail
Minha pergunta é: por que f
in first
have type ('a -> 'a)
mas f
in second
have type ('a -> 'b)
?
Você pode vê-lo aqui .