リストのcar側のネストレベルをカウントする関数を作りたいんですが、
破壊操作なしで作れるでしょうか?

こういう入力の場合は、
'(a b c (a b c) d (a b c (d) e) e)
こういう結果を得たい。
a:1
b:1
c:1
a:2
b:2
c:2
d:1
a:2
b:2
c:2
d:3
e:2
e:1

つまり
'(a b c (a b c) d (a b c (d) e) e)
 1 1 1 2 2 2 1 2 2 2 3 2 1

呼び出し形式はこんな感じで
(hoge
 (lambda(x level) (display x)(display ":")(display level)(newline))
 '(a b c (a b c) d (a b c (d) e) e ))