1

私は、Scheme のシンボルを理解するのに苦労しています。以下は私を混乱させます:

1 ]=> (symbol? 'x)
; Value: #t    
1 ]=> (symbol? '('x))
; Value: #f

最初のものが記号である理由は理解できたと思いますが、そうで'('x))ないのはなぜですか? 誰かが理由を説明してもらえますか?

価値のあるものとして、私は MIT/GNU スキームを実行しています。

4

2 に答える 2

4

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)ます。

于 2012-05-19T15:36:26.480 に答える
1

'('x)シンボルではなくリストです。スキームの記号は、変数やキーワードと同様に英数字です。'a記号も もそうですが、'supercalafragalistic'(1 2 3)数字のリストです。

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

于 2012-05-19T15:21:59.310 に答える