'
ラケットのサインの意味がちょっとわかりません。私には、同じ記号が異なる意味を持っているように見えます。以下の 2 つの簡単な例を見てください。
vs を要素として含む、新しく割り当てられたリストを返します。
> (list 1 2 3 4)
'(1 2 3 4)
字句情報、ソースの場所などを除いて、データ(つまり、プログラム フラグメントの表現) に対応する定数値を生成します。引用符で囲まれたペア、ベクトル、およびボックスは不変です。
> '(1 2 3 4)
'(1 2 3 4)
だから私の質問は次のとおりです:'
記号には2つの意味(記号とリスト)がありますか、それとも同じデータ型でlist
実際に引用符で囲まれた定数値を返しますか? 2番目の場合、なぜこれが機能するのですか:
> '(+ (- 2 13) 11)
'(+ (- 2 13) 11)
> (eval (list + (- 2 13) 11))
0
(また(eval '(+ (- 2 13) 11))
、動作し、正しく評価され0
ます)
しかし、これはしません:
> (list + (- 2 13) 11)
'(#<procedure:+> -11 11)
> (eval '(#<procedure:+> -11 11))
. read: bad syntax `#<'
おそらく関連: Lisp/Scheme の ' (アポストロフィ) とは?