>(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