私は、Scheme のシンボルを理解するのに苦労しています。以下は私を混乱させます:
1 ]=> (symbol? 'x)
; Value: #t
1 ]=> (symbol? '('x))
; Value: #f
最初のものが記号である理由は理解できたと思いますが、そうで'('x))ないのはなぜですか? 誰かが理由を説明してもらえますか?
価値のあるものとして、私は MIT/GNU スキームを実行しています。
In scheme'...は の省略形です(quote ...)。
したがって'x、の省略形です(quote x)。と'(1 2 3)は省略形(quote (1 2 3))です。
引用式が評価されると、引用された値は式として評価されず、単に返されます。
引用されているのは(quote x)記号xです。So(quote x)はシンボル に評価されますx。
(quote (1 2 3))引用された値にはリストがあります。に評価され(1 2 3)ます。
少し複雑な例では、
'('x) これは の省略形です(quote ((quote x)))。
これは list に評価されます((quote x))。ほとんどのスキームでは、 として印刷され('x)ます。
'('x)シンボルではなくリストです。スキームの記号は、変数やキーワードと同様に英数字です。'a記号も もそうですが、'supercalafragalisticは'(1 2 3)数字のリストです。
何があなたをうんざりさせているのか正確にはわかりませんが、おそらく'. 'シンボルを作成するために使用できますが、リストやその他のものを作成するためにも使用できます。で始まるものすべてが'記号というわけではありません。