質問
以下は、SICPの演習です。私は自分でそれを理解することができませんでした。なぜ私を理解するのを助けることができますか?
インタープリターに次のコードを入力します:
(car ''abracadabra)
そして、「quote」を出力します。なぜですか?
解決
gimpfが言ったように、「abracadabra =(quote abracadabra)」。これを確認するには、REPLに「abracadabra」と入力し、印刷します(引用abracadabra)。
他のヒント
'' abracadabraは本当に(quote(quote abracadabra))であるため。 Schemeでは、ルールは次のとおりです。s-expressionのすべての部分を評価し、最初の部分を残りの部分に適用します。
"車"および「quote」以下の記号です。 #carと#quoteは、それらが参照する関数です。
服用する場合
(car (quote (quote abracadabra)))
部品を評価すると、得られます
(#car (quote abracadabra))
次に、最初の部分(car関数)を2番目の部分(2つのシンボルのリスト)に適用します。
quote
そして、シンボル「quote」のみを取得します。
Schemeで何が起こるかを把握するために、パーツを評価し、最初のものを残りに適用することを忘れないでください。見積を評価すると、内部のものが得られます。唯一紛らわしい部分は、いくつかのプリミティブ(数値と文字列)が自分自身に評価されることです。
所属していません StackOverflow