Specifying Kinds of Types
Ross Paterson
ross@soi.city.ac.uk
Fri, 8 Feb 2002 11:56:14 +0000
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 Haskell Workshop,
> he wrote in his article
> Restricted Data Types in Haskell
> [...]
>
> data Set cxt a = Set [a] | Unused (cxt a -> ()) deriving Show
Another kludge, that works with newtypes too, is
type Hint a b = a
newtype Set cxt a = Set (Hint [a] (cxt a)) deriving Show