複数引数をリストにして関数適用

applyという関数を使うと、

(some-function arg1 arg2 arg3 arg4)

(apply some-function '(arg1 arg2 arg3 arg4))

って書けますぜ、と。
可変長引数と相性が良いっぽい。こんな感じ。

gosh> (define make-logger
        (lambda (f)
          (lambda args
            (print "args=" args)
            (apply f args))))
make-logger
gosh> ((make-logger append) '(1 2 3)
                            '(a b c)
                            '(X Y Z))
args=((1 2 3) (a b c) (X Y Z))
(1 2 3 a b c X Y Z)