o that.
Yet.)
Simon
| -Original Message-
| From: Ashley Yakeley [mailto:[EMAIL PROTECTED]]
| Sent: 08 February 2002 11:26
| To: Haskell List
| Subject: Specifying Kinds of Types
|
|
| I'd like to be able to declare the kinds of new types and synonyms,
| because sometimes Hask
Ashley Yakeley wrote:
I'd like to be able to declare the kinds of new types and synonyms,
because sometimes Haskell can't infer them. For instance:
data CMap0 p q = MkCMap0;
Without evidence, Haskell assumes that p and q have kind '*' (as per sec.
>I'd like to be able to declare the kinds of new types and synonyms,
>because sometimes Haskell can't infer them.
The kind inferencer normally works quite well
in Haskell. Only when you use phantom types
(ie. unused type variables), you sometimes have to
guide the kind inferencer -- either with
On Fri, Feb 08, 2002 at 12:39:30PM +0100, Rijk J.C.van Haaften wrote:
> Ashley Yakeley wrote:
> >I'd like to be able to declare the kinds of new types and synonyms,
> >because sometimes Haskell can't infer them.
>
> It is possible using a trick due to John Hughes. In
> Proceedings of the 1999
Ashley Yakeley wrote:
>I'd like to be able to declare the kinds of new types and synonyms,
>because sometimes Haskell can't infer them. For instance:
>
> data CMap0 p q = MkCMap0;
>
>Without evidence, Haskell assumes that p and q have kind '*' (as per sec.
>4.6), and therefore CMap0 has kind '
> data CMap0 (p ::: * -> *) (q ::: * -> *) = MkCMap0;
Or
data (CMap0 :: (* -> *) -> (* -> *) -> *) = MkCMap0
-- Lennart
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell
Ashley Yakeley wondered:
| I'd like to be able to declare the kinds of new types
| and synonyms, because sometimes Haskell can't infer
| them. For instance:
|
| data CMap0 p q = MkCMap0;
|
| Actually, I wanted p and q to both have kind '* -> *'.
The following workaround might be usefu
I'd like to be able to declare the kinds of new types and synonyms,
because sometimes Haskell can't infer them. For instance:
data CMap0 p q = MkCMap0;
Without evidence, Haskell assumes that p and q have kind '*' (as per sec.
4.6), and therefore CMap0 has kind '* -> * -> *'. Actually, I wa