R6RS:翻訳:R6RS:1.10 Syntactic data and datum values

R6RS:翻訳:R6RS:1.10 Syntactic data and datum values

1.10 構文データとデータ値

Scheme のオブジェクトの部分集合はデータ値と呼ばれている。これには、真偽値、数値オブジェクト、文字、シンボル、文字列、さらにその要素がデータであるリストやベクタが含まれる。各データ値は構文データとしてテキスト形式で表すことができ、情報を失うことなく書き出し読み戻すことができる。データ値は複数の異なる構文データで表現することができる。さらに、それぞれのデータ値はプログラム中で構文データに ' を前置することでリテラル値に変換することができる。

’23         ⇒ 23
’#t         ⇒ #t
’foo         ⇒ foo
’(1 2 3)         ⇒ (1 2 3)
’#(1 2 3)         ⇒ #(1 2 3)

上の例で、数値オブジェクトと真偽値の表現には ' は必要ない。構文データ foo は名前が「foo」であるシンボルを表してい、 'foo はそのシンボルを値とするリテラル式である。 (1 2 3) は 1、 2、 3 を要素とするリストを表す構文データであり、 '(1 2 3) はこのリストを値とするリテラル式である。同様に、 #(1 2 3) は 1、 2、 3 を要素とするベクタであり、 '#(1 2 3) はそれに対応するリテラルである。

構文データは Scheme のフォームの上位集合である。したがって、データを使って Scheme のフォームをデータオブジェクトとして表現することができる。特に、シンボルは識別子を表現するのに使うことができる。

’(+ 23 42)         ⇒ (+ 23 42)
’(define (f x) (+ x 42)) 
                ⇒ (define (f x) (+ x 42))

これにより、 Scheme のソースコードを操作するプログラム、特に解釈系やプログラム変換器を書くことが容易になっている。

More ...