In my opinion, Nimrod is a language where a lot of features can produce dirty code ( although some of them are very well done and they are extremely powerful tools ), and it is the developer's choice to use the features for the right purposes ( especially true with term rewriting ).