Schemeは空白区切り?

うぅん。コレ。

(define abc"xyz")

コンパイルエラーになるかと思って調べてみたら、

gauche

% gosh
gosh> (define abc"xyz")
abc
gosh> abc
"xyz"
gosh> (string-append "abc""def""xyz")
"abcdefxyz"

アレ?

MzScheme

% mzscheme
Welcome to MzScheme v370 [3m], Copyright (c) 2004-2007 PLT Scheme Inc.
> (define abc"xyz")
> abc
"xyz"

アレレレレ。

他の処理系(MIT,chez)も通った。


どうやら空白区切りではないらしい。仕様かな。

ということで、R5RS読み

読むぞー。

Revised^5 Report on the Algorithmic Language Scheme - Formal syntax and semantics

<fomals> -> (<variable>*) | ...

となっているので、どうやらabc"xyz"は合法。


ちょっとBNFが読めるようになってきた!!