I played around (rather ineffectually) with David's Haskell code, back when the whole "Yacc is Dead" stuff was here, and I still tend to believe that Haskell results in less code when laziness is involved :)
That said, I think I really like define/fix