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 のソースコードを操作するプログラム、特に解釈系やプログラム変換器を書くことが容易になっている。