Hi Sean Synthesized attributes are a bit more general than a Writer as there is no restriction to monoidal values. I might have re-worked UUAG code to monadic code before, but if I did it would have been simple stuff and I think I'd have just used State, or maybe State + Reader. Best wishes Stephen