質問

以下は、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で何が起こるかを把握するために、パーツを評価し、最初のものを残りに適用することを忘れないでください。見積を評価すると、内部のものが得られます。唯一紛らわしい部分は、いくつかのプリミティブ(数値と文字列)が自分自身に評価されることです。

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