文法エラーについて

なかなか興味深い。

Gauche

gosh> (define (x))
x
gosh> (x)
#<undef>
gosh> (define (y 3))
y
gosh> (define (z n n) (+ n n))
z
gosh> (z 1 2)
2

通った。Gaucheは文法エラーがゆるいらしい。

引数チェックすると重くなるからだと思われる。

MzScheme

> (define (x))
stdin::40: define: bad syntax (no expressions for procedure body) in: (define (x))

ことごとくエラーだ。変な文法は殆んど通らない。くそぅ。

コンパイルを前提に考えるとこっちの方がいいのかも。


ゆるめでいくかな。