私はこのスキームコードを持っています:
(define (x . y) y)
(x 1 2 3)
そして、私はそれが次と同等であることを知っています:
'(1 2 3)
しかし、私はその理由を理解できません。
コードの最初の行は何をしますか?
ありがとうございました。
私はこのスキームコードを持っています:
(define (x . y) y)
(x 1 2 3)
そして、私はそれが次と同等であることを知っています:
'(1 2 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)
です。