なぜ(リスト '引用' x)は 'Xとない(' X)または(引用符「X)に評価されていますか?

StackOverflow https://stackoverflow.com/questions/4226948

質問

私はLISPを勉強しようとしているし、次のコードのようなものが使用されているコード例を経由してます:

(list「の引用5)

この評価さREPLで5」へ。私はそれが(5 ')または(引用5)

に評価することが期待しました

私はCLISP REPLでこれを実行しようとしています。

すべてのヘルプをいただければ幸いです。

役に立ちましたか?

解決

リード評価-printループが最初に読み出し、次に評価する

'引用 "とは、その名QUOTEあるシンボル" として読まれます。

5 "が数5"

として読み出されます だから、(list「の引用5)は 『最初の要素が第二の要素である5名QUOTEで、シンボルであるリストを作る』と評価されます。

この評価の結果は、「(引用5)」のように記述することができます。 「「5" は、これを別の言い方であり、いくつかの(おそらく最も)lispのimplentationsでのプリンタは、短い形式の代わりに、長い1つを出力するように選択されます。

あなたがいることを覚えておく必要がREPLで次のように入力してこのようなものを学んでいる。

読み出し及び評価の2つのステップは異なっているが、ループが行っていることの両方

試してみてください
* (read-from-string "(list 'quote 5)")
(LIST 'QUOTE 5)

一度に一つのステップを実行するには、または

* (first (read-from-string "(quote 5)"))
QUOTE
* (second (read-from-string "(quote 5)"))
5
* (read-from-string "(quote 5)")
'5
"(引用5)" と「"5" は同じものであることを自分自身を納得させるために、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top