0

私はこの表現を持っています、

(write (cdr (car' ('(p q) r))))

http://ideone.com/bkZv20

これは((P Q))出力として与えます。私は一日中頭を悩ませていましたが、これがどのように機能するのかまだ理解できていません.

carその部分だけを行うと、

(write (car' ('(p q) r)))

を与え'(P Q)ます。

次に、私によると、出力として(cdr '(P Q))与える必要があります。(Q)

最終的な答えはどうですか、'(P Q)私の質問です。

4

1 に答える 1

6

そこに余分な引用符があります(最初のものはに固執してcarいますが、それでも正しく解析されます)、引用符で囲まれた引用符が発生するため、本質的には次のとおりです。

(write (cdr (car '((quote (p q)) r))))

これを取得するcarと、データだけが残ります。

(quote (p q))

そしてcdr、これを再度取得すると、次のデータが得られます。

(p q)

あなたが観察したように。代わりに車の車を見ると

(write (car (car '((quote (p q)) r))))

あなたは見る必要があります

quote

自体。'(a b)(quote (a b))は同じものであることを忘れないでください。

したがって、余分な引用符を削除するだけです。つまり、次のようになります。

(write (cdr (car '((p q) r))))
于 2016-02-23T23:04:10.573 に答える