LYAH is great. For those who are interested, there is a library, 'syz' (Scrap Your Zippers), which provides a generic zipper for any data type, even mutually-recursive types:<p><a href="http://hackage.haskell.org/packages/archive/syz/0.2.0.0/doc/html/Data-Generics-Zipper.html" rel="nofollow">http://hackage.haskell.org/packages/archive/syz/0.2.0.0/doc/...</a><p>Its internals are pretty interesting if you've ever thought about implementing a generic zipper structure. For example it uses Typeable to reify the focus type.<p>I'm finishing up my own generic zipper library which I hope will be simpler and more useful than syz.