| Are partial applications of data-types allowed then?

Yes they are, as described on pages 31--32 of the (draft) report.

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

You can apply any constructor e1 with a kind (k1 -> k2), be it a
variable, constant, or application, to any other constructor e2 of
kind k1, forming a (possibly partial) application (e1 e2), as described
on pages 31--32 of the (draft) report.  As you say, this permits 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.

Maybe you should take another look at pages 31--32 of the (draft) report,
which would also shown you that there are no lambdas in Haskell types.
The paragraph I'm refering to begins with the words "The main forms of
type expression are as follows ..."  The point that Lennart made -- synonym
constructors cannot be partially applied -- is stated in the section on
synonyms, on page 37.

Perhaps you can clarify exactly what extra kinds of information you would
like to see in the report?

All the best,
Mark



Reply via email to