%    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).

Are partial applications of data-types allowed then?
If not, the higher kinds would not make sense.

If they do, what kind of partial applications are allowed?
Just the data-type identifier without arguments, or is it possible
to use them curried (the kind (*->*)->*->* suggests currying).

The report has a pointer to a paper by Mark Jones, where this is
presumably explained.  But I don't think pointing to papers is good
enough for a language definition.  At least it should be clear from
the report what a type is.

Stefan Kahrs



Reply via email to