あと、だいたいのScheme入門には()がリストの終端を表すって書いてあるのに、実際には
'(1 . ((). (2 . ()))) これが (1 () 2) こんな感じで通っちゃうし

(length '(1 . ((). (2 . ())))) これは 3 になるし、終端判定に()は利用されてないんじゃね?
だったら終端に()付ける必要なくね?って思っちゃう