Deep embedding of an attribute grammar language in Haskell