Scheme 对象的一个子集是数据值(datum value)。它们包括 booleans,数,字符,符号,字符串以及由这些数据组成的列表或者向量。每个数据值都可以使用文本形式表示为:句法数据(syntactic data)——它可以被不丢失信息的写出与读入。一个数据值可能有不止一种的句法数据表示方式。每个数据值都可以通过在其对应的句法数据前加上 '
前缀变为一个字面表达式:
'23 ==> 23 '#t ==> #t 'foo ==> foo '(1 2 3) ==> (1 2 3) '#(1 2 3) ==> #(1 2 3)
在表示数或者 boolean 对象时不需要添加 '
前缀。句法数据 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 源代码的程序变得很容易,如写一个解释器或者程序变换器(program transformers)。