[Haskell-cafe] Constraining constraints

Alp Mestanogullari alpmestan at gmail.com
Thu May 11 00:43:45 UTC 2017


This might help?
https://hackage.haskell.org/package/constraints-0.9.1/docs/Data-Constraint.html#t::-45-

Le 7 mai 2017 06:21, "Clinton Mead" <clintonmead at gmail.com> a écrit :

> I posted the following on stackoverflow
> <http://stackoverflow.com/questions/43827374/what-is-a-can-be-derived-from-constraint>,
> but it hasn't got too much attention so I thought I'd ask here:
>
> I can write the following:
>
> {-# LANGUAGE RankNTypes #-}{-# LANGUAGE FlexibleInstances #-}{-# LANGUAGE UndecidableInstances #-}{-# LANGUAGE ConstraintKinds #-}
>
> f :: Integral a => (forall b. Num b => b) -> a
> f = id
>
> And all is good. Presumably GHC can derive Integral from Num so all is
> well.
>
> I can be a bit tricker, yet I'm still fine:
>
> class Integral x => MyIntegral xinstance Integral x => MyIntegral x
> class Num x => MyNum xinstance Num x => MyNum x
>
> f' :: MyIntegral a => (forall b. MyNum b => b) -> a
> f' = id
>
> So lets say I want to generalise this, like so:
>
> g :: c2 a => (forall b. c1 b => b) -> a
> g = id
>
> Now obviously this will spit the dummy, because GHC can not derive c2
>  from c1, as c2 is not constrained.
>
> What do I need to add to the type signature of g to say that "you can
> derive c2 from c1"?
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170511/2a385533/attachment.html>


More information about the Haskell-Cafe mailing list