There is definitely no pure way to get from ‘a’ to its constraints.

  *   It is far from clear what “its constraints” are.   Is (C a b) such a 
constraint?  C [a] b?  What about superclasses?
  *   Constraints vary depending on where  you are.  GADT matches can bring 
into scope extra constraints on existing type variables.

So as Ben says, to give a sensible response you’ll need to explain more about 
your goal

Simon

From: ghc-devs <ghc-devs-boun...@haskell.org> On Behalf Of Alejandro Serrano 
Mena
Sent: 16 January 2020 16:19
To: GHC developers <ghc-devs@haskell.org>
Subject: Find constraints over type

Dear GHC devs,
I am trying to figure out a way to obtain the constraints that hold over a 
type. Let me give you an example: suppose that I write the following function:

f :: Eq a => [a] -> Bool
f xs = xs == []

If I ask for the type of the Var ' xs', I get back '[a]'. This is correct, but 
I am missing the crucial information that '[a]' must be Eq.

Is there an easy way to get it? It seems that 'varType' doesn't give me enough 
information.

Regards,
Alejandro
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to