エラーになりそうでならないScheme式(といっても2つだけ)

その1

(define '(a b))

typoして、defineの次にシンボルを記入し忘れた式。
アッ間違ったエラーだっ!と思ってもこれはエラーにならない。

(define '(a b))
  ↓
(define (quote (a b)))
 ↓
(define quote (lambda ((a b)))

ってことになって、quoteを再定義してしまう。
ていうか、(lambda ( (a b)))なんてボディーがないlambda式ありなの?って思うかもしれないけど、これもエラーにならない。
r6rsを斜めに読んだ感じでは、式が0個のボディーはありうるが、その場合の値については記載がないので undefined なんだなきっと。
gaucheだと ( (lambda (a1 ... an)) v1 ... vn) で n が返る。引数の個数。(begin)は #undef。
それから (lambda ( (a b)) ... vn) ってのもいいのか。うーこれは初見。
どう使うのかこれから勉強します。

その2

(begin 1 2 . (3 4))

間違って "." いれちゃった!シンタックスエラーだよねこれ!
とか思ってもこれはエラーにならない。

(begin 1 2 . (3 4))
 ↓
(begin . (1 . (2 . (3 . (4 . '())))))
 ↓
(begin 1 2 3 4)
 ↓
  4

間違えて "." を入れ無ければ値は (3 4) のはずが、"." を入れてしまったがために値が 4 になってしまう。
そんな間違いふつーしねーよな。
いやなんとなく。