[Haskell-cafe] Extending constraints

Andres Löh andres at well-typed.com
Tue Jun 5 17:52:30 CEST 2012


Hi Bas.

I haven't thought about this for long, but ...

> data ProxyWrapper constraint =
>    forall a. constraint a => ProxyWrapper (Proxy a)

I'm assuming adding Typable a in ProxyWrapper is not an option for you?

So then what about:

class (c1 a, c2 a) => Ext c1 c2 a
instance (c1 a, c2 a) => Ext c1 c2 a

typeOfInnerProxy :: ProxyWrapper (Ext Typeable constraint) -> TypeRep
typeOfInnerProxy (ProxyWrapper p) = typeOfArg p

This will certainly require all sorts of undecidable instances :) But
does it work for you?

Cheers,
  Andres

-- 
Andres Löh, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com



More information about the Haskell-Cafe mailing list