Why CLEAN is "based" on GRS instead of LTRS? Recursive let seems to be not so useful, but cyclic links in data makes automatic reasoning very hard and gives another evil source of nontermination. Maybe it is worth to add a compiler option to deny recursive lets (and wheres) per module and convert them internally to let-befores?