Think of the types in this calculation deeply, really deeply
id id
From right to left, the first id is of type
a -> a
this means that the second id that takes the first argument must be of type
(a -> a) -> (a -> a)
Types do not match! OK, you could say that the first id had this later type, however it would make the second id type
((a -> a) -> (a -> a)) -> ((a -> a) -> (a -> a))
I thought it was encouraging that functions can have generic or variable types, functions that are associated with some in the calculation. As I see it, it seems that a new function is iddefined for each call.
source
share