[Haskell-cafe] Getting list of constructors of a Type

Richard Eisenberg eir at cis.upenn.edu
Wed Jun 4 14:59:43 UTC 2014


Hi Alejandro,

From your use case, it looks like you need splitTyConApp (from GHC's Type module). Then, tyConDataCons will do the trick. Perhaps splitTyConApp should be in the GHC module itself. If you think so, submit a bug report and patch, please!

I don't think Template Haskell will work for you here -- mixing calls from the GHC module and TH is a recipe for disaster.

I hope this helps,
Richard

On Jun 4, 2014, at 8:30 AM, Alejandro Serrano Mena <trupill at gmail.com> wrote:

> My aim is to extend the capabilities of ghc-mod to do case split. For that matter, I'm using the GHC module of the ghc package (the same ghc-mod uses). Via the exprType function I get a Type value. Then, I would like to be able to call getInfo (everything from the GHC module) to get the information of that type.
> 
> I'm not sure if using Template Haskell is something I can use, but I will definitely try :)
> 
> 
> 2014-06-04 0:01 GMT+02:00 Nils Schweinsberg <mail at nils.cc>:
> I'm not sure what exactly you're trying to do, but with Template Haskell it's easy:
> 
> test :: Name -> Q [Dec]
> test name = do
>   info <- reify name
>   ...
> 
> Then call it from another module with the type name as argument (double single quotes):
> 
> data Test = A | B
> 
> test ''Test
> 
> The `Info` type returned by `reify` is described in:
> 
> http://hackage.haskell.org/package/template-haskell-2.9.0.0/docs/Language-Haskell-TH-Syntax.html#t:Info
> 
> 
> - Nils
> 
> Am 03.06.2014 21:13, schrieb Alejandro Serrano Mena:
> Dear Haskell-Café,
> As part of my Google Summer of Code, I need to get the list of data
> constructors of a certain data type on a specific scenario.
> In my case, I'm getting a value of type Type (by calling exprType). I
> was expecting to be able to call getInfo directly on that value of type
> Type, but it doesn't have a name nor the constructors of Type are
> public. Thus, I'm not able to get that information :(
> 
> Thanks in advance,
> Alejandro
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140604/52d784f7/attachment.html>


More information about the Haskell-Cafe mailing list