Mmmm, I see what you're getting at. Maybe it's a wimp-out but how about: It is an error to use the named structure in the definition of a letrec variable as an argument to a strict operator during the evaluation of its definition. e.g. (letrec ((foo (+ 1 foo))) <---- error (letrec ((bar (cons 42 bar))) <--- ok. Rice. -------