4

178 ページに、次の質問があります。

(cons rep-car
    (cons (cons rep-quote
        (cons
            (cons rep-a
                (cons rep-b
                    (cons rep-c
                        (quote ()))))
            (quote ())))
    (quote ())))

どこ

rep-car is car
rep-quote is quote
rep-a is a
rep-b is b
rep-c is c

本に書いてある答えは

(car (quote (a b c)))

しかし、私は答えがあるべきだと思います

(car ((quote ((a b c)))))

なぜ私は間違っているのですか?

4

2 に答える 2

2

いいえ、本の答えは正しいです。(quote ())3 つのリストを作成するために、式に が 3 回出現することに注意してください。次に、さまざまなアトムをリストにコンスします。あなたの回答には、3 つではなく 5 つのリストが含まれています。

(quote ())空のリストを返すだけです。(cons 1 (quote ()))yield の空のリストに項目を 1 つ追加します(1)

于 2012-10-18T05:25:45.480 に答える
0
(car ((quote ((a b c)))))

そのコード スニペットを実行してみてください。エラー メッセージが表示されます。そのコードが行うことは

  1. シンボルab、およびcのリストを生成します。
  2. そのリストを関数として実行しようとします
  3. carを結果に適用します。

ステップ 2 は失敗するため ( '(abc)は関数ではないため)、ステップ 3 には到達しません。

元のコードを見ると、コードのどの部分もそれを行っていないことは明らかです。

あなたはおそらく言うつもりだった

(car (quote ((a b c))))

これは、Alex D. によって与えられた理由から間違っています。

于 2012-10-18T06:24:07.170 に答える