[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


3. 辞書的規約

本項ではSchemeプログラムを書くにあたっての辞書的規約をいくつか、形式にこだわらずに説明する。Schemeの構文則についてはsection 8.1 構文則参照。

文字定数と文字列定数の内部を除いて、大文字の文字と小文字の文字は全く区別されない。例えばfooFOOと同一の識別子であり、#x1AB#X1abは同一の数である。

3.1 識別子

他のプログラミング言語で許されている識別子のほとんどは、Schemeでも許される。識別子を形成する厳密な規則はSchemeの処理系ごとに異なるが、すべての処理系において、文字の連続、数字、それに数字の開始となることがあり得ない"拡張アルファベット文字"は、識別子である。加えて、+-、および...は識別子である。識別子の例をいくつか次に示す。

  lambda                   q
  list->vector             soup
  +                        V17a
  <=?                      a34kTMNs
  the-word-recursion-has-many-meanings

拡張アルファベット文字は、識別子の中で文字のように使用することができる。拡張アルファベット文字は次のものである。

  ! $ % & * + - . / : < = > ? @ ^ _ ~

識別子の形式構文についてはsection 8.1.1 辞書的構造参照。

Schemeプログラムでは、識別子は次の二つの用途に使用される。

3.2 空白とコメント

空白文字はスペース文字類と改行文字類である(実際の処理系では概して、タ ブや改ページなどの追加の空白文字が用意されている)。空白文字は可読性を 増すためと、必要に応じてトークン同士を分離するために使用されるが、それ 以外の場合は意味を持たない。トークンは識別子や数などの文法上分割できな い単位である。空白は二つのいかなるトークンの間にも挿入できるが、トーク ン内部に入れてはならない。文字列の中では必要に応じて空白を入れることが できる。

セミコロン(;)はコメントの開始を示す。セミコロンは、それが現れた行の終端まで有効である。コメントはSchemeからは見えないが、行の終りは空白として認識される。これにより、識別子や数の内部にコメントが入り込むことが防止される。

;;; FACT 手続きは
;;; 非負の整数の階乗を計算する
(define fact
  (lambda (n)
    (if (= n 0)
      1 ;終了の場合: 1が返される
      (* n (fact (- n 1))))))

3.3 その他の記法

数に使用される記法についてはsection 7.2 数参照。

. + - これは数に使用され、最初の文字以外であれば識別子のどの場所にも使用できる。区切り文字をともなったプラス記号とマイナス記号自体も識別子である。区切り文字をともなったピリオド(数や識別子の中で使用されたピリオド以外のもの)はペア(7)
( ) 小括弧は、リストのグループ化とリストの表記に使用される(section 7.3.2 ペアとリスト)。
' 一重引用符(8)
` バッククォート文字(9)
, ,@ 文字コンマと文字列コンマアットマークは、バッククォートとともに使用される (section 5.2.6 バッククォート式)。
" 二重引用符は文字列の区切りとして使用される(section 7.3.5 文字列)。
\ バックスラッシュは構文中では文字定数として(section 7.3.4 文字型)、文字列定数(section 7.3.5 文字列)内ではエスケープ文字として使用される 。
[ ] { } | 左右大括弧と左右中括弧は、将来生じ得る言語の拡張のために予約されている。
# シャープサインはその直後に続く文字に応じて、さまざまな用途に使用される。
#t #f これらは論理定数である(section 7.3.1 論理式)。
#\ 文字定数の始まりを示す(section 7.3.4 文字型)。
#( ベクタ定数の始まりを示す(section 7.3.6 ベクタ)。ベクタ定数は")"で終る。
#e #i #b #o #d #x 以上は数の表記に使用される(section 7.2.4 数値定数の構文)。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]