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

Andrew Gibiansky andrew.gibiansky at gmail.com
Wed Jun 4 04:54:06 UTC 2014


Alejandro,

If I understand correctly, you're using the InteractiveEval module from the
GHC API. That module exposes a very specific interface, and sometimes
you'll need to do things beyond that - my approach has then been to look at
the implementation of these things, copy/paste code, and follow the types.
This will take you through other modules like HscTypes and so on, but you
might be able to figure out how to do what you want. The GHC source code
isn't great, but is fairly understandable if you stare at it for long
enough.

I also very highly encourage you to document what you did on the wiki page
for GHC API. The GHC API is in **dire** need of more explained example code
using it.

-- Andrew


On Tue, Jun 3, 2014 at 3:01 PM, Nils Schweinsberg <mail at nils.cc> wrote:

> 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/20140603/6ac90703/attachment.html>


More information about the Haskell-Cafe mailing list