> (list 'a 'b) -> (a b) > ((if (= (+ 1 1) 2) list cons) 'a 'b) -> (a b)というようになります. 最初の例では,listの値を取ってくると関数本体に なるためその関数本体を引数の'a,'bを評価したものに 適用します. 次の例では,ifフォームの計算結果がlistを評価した ものつまり,listの関数本体になり,最初の例と同じになります. Scheme言語の世界的によく用いられているテキストと, 関連する文献をあげておきます.
@book{Scheme, title = "Structure and Interpretation of Computer Programs", author = "Harold Abelson and Gerald Jay Sussman and Julie Sussman", publisher = "The MIT Press", year = 1985} @book{Scheme2, title = "Structure and Interpretation of Computer Programs, Second Edition (和田英一訳,計算機プログラムの構造と解釈 第二版, ピアソン,2000)", author = "Harold Abelson and Gerald Jay Sussman and Julie Sussman", publisher = "The MIT Press", year = 1996} @unpublished{CLinger91, author = "William Clinger and Jonathan Rees", title = "{Revised^4 Report on the Algorithmic Language Scheme}", note = "", publisher = "", year = 1991} @techreport{CLinger85, author = "William Clinger, editor", title = "{The revised revised report on Scheme, or an uncommon Lisp}", number = "{AIM-848}", institution = "{Massachusetts Institute of Technology, Artificial Intelligence Laboratory}", year = 1985}