なぜ(リスト '引用' x)は 'Xとない(' X)または(引用符「X)に評価されていますか?
-
26-09-2019 - |
質問
私は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" は同じものであることを自分自身を納得させるために、
所属していません StackOverflow