ConstraintKinds and default associated empty constraints
wren ng thornton
wren at freegeek.org
Mon Jan 9 06:21:13 CET 2012
On 1/8/12 8:32 AM, Bas van Dijk wrote:
> On 23 December 2011 17:44, Simon Peyton-Jones<simonpj at microsoft.com> wrote:
>> My attempt at forming a new understanding was driven by your example.
>>
>> class Functor f where
>> type C f :: * -> Constraint
>> type C f = ()
>>
>> sorry -- that was simply type incorrect. () does not have kind * ->
>> Constraint
>
> So am I correct that the `class Empty a; instance Empty a` trick is
> currently the only way to get default associated empty constraints?
Couldn't the following work?
class Functor f where
type C f :: * -> Constraint
type C f _ = ()
It seems to me that adding const to the type level (either implicitly or
explicitly) is cleaner and simpler than overloading () to be Constraint,
*->Constraint, *->*->Constraint,...
--
Live well,
~wren
More information about the Glasgow-haskell-users
mailing list