使う処理系によっては比較的簡単かもしれないな。
たとえばchez(petite)なら
(sc-expand '(let ((x 1)) (let ((y 1)) (+ x y) (proc list))))
-->
((lambda (#{x |?dp~%SaUTn<X\\*|})
 ((lambda (#{y |?dp~%SaUTn<X\\+|})
  (+ #{x |?dp~%SaUTn<X\\*|} #{y |?dp~%SaUTn<X\\+|})
   (proc list))
  1))
1)
てな感じだから
>lambda文の変数スコープ規則
ってやつは考えなくて良くなるような気がする。
ただ、sc-expandはquotifyマクロの展開中に使われてもトップレベルで展開してしまうので。
(let ((expr (quotify '(...) '(...)))) (expr ...))
みたいなやつはどうなるかな?
実験してみたいが、時間がないので直感だけですまね。