>       data App f a = A (f a)
...
> Take for instance the declaration:
>       something = A ()
> what is the type of  something  ?
> It could be  App (\x->x) (), but it could also be
> App (\x->()) a, for any type a, and a few others.
But there are no types `(\x->x)' or `(\x->())' in Haskell.
So the expression does not typecheck (at least that is
my understanding of how it works).
You might think that
        type I x = x
and then using I alone would give you the type `(\x->x)',
but partial application of type synonyms is not allowed,
thus sidestepping the problem (thanks to Mark Jones for
that little trick).

        -- Lennart



Reply via email to