2

私はこのスキームコードを持っています:

(define (x . y) y)
(x 1 2 3)

そして、私はそれが次と同等であることを知っています:

'(1 2 3)

しかし、私はその理由を理解できません。

コードの最初の行は何をしますか?

ありがとうございました。

4

1 に答える 1

3

5.2 定義(最後の節)によると、最初の行(define (x . y) y)は と同等です。(define x (lambda y y))

そして(lambda y y)手順です。呼び出されると、すべての引数が新しく割り当てられたリストに格納されます。たとえばlist、 として定義できます(define list (lambda xs xs))。( 4.1.4 プロシージャ2 番目の形式の仮パラメータを参照してください。)

So(x 1 2 3)は と同等(list 1 2 3)です。

于 2012-04-17T11:20:59.270 に答える