Scheme ではすべてはS式だ。基本的なデータも、リストも、関数も全部、S式。
アトムもS式。アトムというのは、Scheme での最小単位のようなものらしい。括弧ではない文字からなる文字列(データとしての文字列とは違うことに注意)や数字の列がアトム。ちょっと確かめてみよう。
gosh> atom *** ERROR: unbound variable: atom Stack Trace: _______________________________________
あれ、エラーになった。そうか、クォートしてやらないといけない。クォートすると文字の列をそのものとして扱ってくれる。
gosh> 'atom atom gosh> 12345 12345 gosh> '*abc$ *abc$
リストは、S式を括弧でくくったもの。リスト自体もS式なので、リストのリストも作ることができる。これも当然S式。
gosh> '(x y z) (x y z) gosh> '((x y) z) ((x y) z) gosh> '() ()
最後のは空のリスト。これもS式。