2012-01-25 4 views
11

(リスト1 2 3)の収量(1 2 3)と(引用(1 2 3))は(1 2 3)をもたらすので、両方を持つ理由は何ですか?なぜSchemeはリストと引用の両方を持っていますか?

Schemeは他の点では余裕があるので、これらにはいくつか意味のある違いが必要です。それは何ですか?

+0

"Schemeはそれほど余裕がないので" 'list'は実際にScheme自身が定義できる派生形式であることを知りたいかもしれません:'(define(list。objs)objs) ' –

答えて

27

quotelistの例では、数値定数が評価されるため同じ結果になります。リストに自己評価されていない表現を使用した場合、あなたは違いがわかります(変数や関数呼び出しを言う):

(quote (a b c))はあなたにabc(list a b c)しばらくのシンボルを含むリストを与えるのだろう変数a,bおよびc(変数が存在しない場合はエラー)の値を含むリストを提供します。

+0

OKそれ。ありがとうございました。 – drb

5

Listはリストを作成するので、(list 1 2 3)は3要素リストを作成します。

評価は評価されません。見積もりがなければ、関数1が引数2と3で呼び出されるため、式(1 2 3)は評価されますが、これは明らかに意味がありません。見積もりは評価を防ぎ、文字通り(1,2,3)のような外部印刷可能形式で指定されたリストを返します。

関連する問題