explicitly recursive grammar combinators - a better model for shallow parser dsls .
Type-safe observable sharing in Haskell