Hi Ravi,
You might want to browse through "Comparing Libraries for Generic Programming in Haskell": http://www.cs.uu.nl/research/techreps/repo/CS-2008/2008-010.pdf
SYB and Uniplate are two widely used and well-maintained systems for strategic traversals over arbitrary datatypes. There are other options, too, but it depends on exactly what you want to do.