On 5 June 2012 18:46, Gábor Lehel <illiss...@gmail.com> wrote: > I must be missing something, but this seems a bit useless to me. You > have a phantom type parameter on Proxy, and then you're hiding it. So > when you pattern match on ProxyWrapper you recover the fact that there > was a type which satisfies the constraint, but you don't know what > type it was, and neither do you know about any values which are of the > type. What are you trying to do?
I need a list of types that satisfy a certain constraint. I would like to have the static guarantee that types that don't satisfy the constraint can't be put in the list, as in: nums :: [ProxyWrapper Num] nums = [ ProxyWrapper (Proxy :: Proxy Int) , ProxyWrapper (Proxy :: Proxy Double) , ProxyWrapper (Proxy :: Proxy String) -- not allowed ] fracs :: [ProxyWrapper Fractional] fracs = [ ProxyWrapper (Proxy :: Proxy Double) , ProxyWrapper (Proxy :: Proxy Float) , ProxyWrapper (Proxy :: Proxy Int) -- not allowed ] > That said, if you want to be able to recover a Typeable constraint, I > don't see any way except for using 'ProxyWrapper (Ext Typeable > constraint)' as Andres says or putting 'forall a. (constraint a, > Typeable a)' in the definition of ProxyWrapper. Indeed, I'm now going for the latter option. Regards, Bas _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe