複数引数をリストにして関数適用
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)