>(apply + '(1 2 3)) 6例えば、map と apply をつかって 1 * 1 + ... + n * n を以下の様に表現することも出来ます。
(define (enumerate-interval begin end) ; begin から end までの整数のリストを返す関数
(if (> begin end)
'()
(cons begin
(enumerate-interval (+ 1 begin)
end))))
-------------
> (apply + (map square (enumerate-interval 1 10))) ; 1 * 1 + .. + 10 * 10
385
つまり、まず、 (1 2 .. 10) を作っておき、その square のリストを作り、
それを引数として + に適用(apply)しています。
apply に関する詳しい情報はこちら。
但し、この使い方は、DrScheme では、FullScheme Mode にしないと使えません。
> (define (foo x y . rest)
(list x y rest))
> (foo 0 1 2 3 4 5 6)
(0 1 (2 3 4 5 6))
> (foo 0 1)
(0 1 ())
99.10.7/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp