[Haskell-cafe] Foldable for BNFC generated tree

Johan Jeuring johanj at cs.uu.nl
Sat May 16 14:04:55 EDT 2009

Hi Deniz,

>> Deniz Dogan wrote:
>>> So, basically I'd like some sort of folding functionality for these
>>> data types, without having to hack the lexer/parser myself
>>> (parameterising the data types), because as I said they're being
>>> generated by BNFC.
>> What exactly do you mean by folding functionality? Folding as in the
>> Foldable type class applies to containers, which your data type  
>> isn't.
>> Perhaps you're looking for generic programming?
>> There are several good GP libraries out there:
>> * EMGM: http://www.cs.uu.nl/wiki/GenericProgramming/EMGM
>> * Uniplate: http://community.haskell.org/~ndm/uniplate/
>> * SYB: http://www.cs.vu.nl/boilerplate/
>> See also Neil Mitchell's blog for some examples:
>> http://neilmitchell.blogspot.com/2009/03/concise-generic-queries.html
> You're right, what I was asking for didn't make much sense... I was
> really looking for GP.

If I interpret your question correctly, you want a fold for a set of
mutually recursive datatypes without type parameters. This function is
available in the generic programming library multirec:


Kind reagrds,

Johan Jeuring

More information about the Haskell-Cafe mailing list