let f x = x in (f true, f 1)

If the type of f is not generalized to (forall a. a -> a) before used in the body, it will not type check.

Unfortunately, in my source code I cannot find any examples where any locally bound identifier should be generalized.

Why have all this machinery for generalization?

*Actually, given more detailed type information for the arguments of f, it is substantially more trivial to generate faster code for f. So that's a good argument*

*against*generalization.
## No comments:

## Post a Comment