
Hello Klaus, Thursday, August 3, 2006, 2:51:01 PM, you wrote:
data SimpleExp = Num Int | Add SimpleExp SimpleExp
data LabelledExp = LNum Int String | LAdd LabelledExp LabelledExp String
The icing on the cake would be if it would also be possible to have a function
unlabel :: LabeledExp -> Exp
that does *not* need to know about the full structure of expressions.
So, what options do I have to address this problem in Haskell?
Template Haskell (compile-time code generator) can be used to automatically generate unlabel and SimpleExp from the LabelledExp definition. you can also see to other generic programming solutions which was overviewed in http://dfa.imn.htwk-leipzig.de/~waldmann/draft/meta-haskell/second.pdf -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com