[Haskell-cafe] Data.Generics: how do I get the type name of a value?

Alistair Bayley alistair at abayley.org
Fri Dec 14 09:11:25 EST 2007


I've been learning/playing with Data.Generics a bit, and have a how-to
question...

If I say
> dataTypeOf ""
then I get
> DataType {tycon = "Prelude.[]", datarep = AlgRep [[],(:)]}

No surprises there. But I'd really like to know that I have a String,
or [Char]. How do I get the name of the concrete type that the list
contains? Is that a reasonable thing to ask for?

I can say:
> gmapQ dataTypeOf "a"
to get:
> [ DataType {tycon = "Prelude.Char", datarep = StringRep}
> , DataType {tycon = "Prelude.[]", datarep = AlgRep [[],(:)]}
> ]

But if I say:
> gmapQ dataTypeOf ""
I get:
> []

which makes sense when you consider the stucture of the List ADT, but
doesn't help me determine the type of the value.

Alistair


More information about the Haskell-Cafe mailing list