Offlist, someone pointed this out:

You can write a compose function that uses recursion to handle arbitrary
arity:

(define (compose . fns)
  (let comp ((fns fns))
    (cond
      ((null? fns) 'error)
      ((null? (cdr fns)) (car fns))
      (else
        (lambda args
          (call-with-values
            (lambda ()
              (apply
                (comp (cdr fns))
                args))
            (car fns)))))))

Sure, but once you get into

    (lambda args ...)

and

    (apply ... args)

type expressions, you can say goodbye to performance. Good compilers do better with explicit parameter lists.

Ed

Reply via email to