私は、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)
数字のリストです。
何があなたをうんざりさせているのか正確にはわかりませんが、おそらく'
. '
シンボルを作成するために使用できますが、リストやその他のものを作成するためにも使用できます。で始まるものすべてが'
記号というわけではありません。