There's apply, which lets you apply a list of arguments to a function:
(define (func a b c d) ...)(apply func '(1 2 3 4))
However, the list must contain the correct number of arguments (not more, not less), otherwise you will get a runtime error.
Your "even better" sounds a lot like currying, but it's not something Scheme supports AFAIK. You could start faking it:
(define (curry func n-args) (define (curry-aux acc) (lambda args (if (< (+ (length acc) (length args)) n-args) (curry-aux (append acc args)) (apply func (append acc args))))) (curry-aux ()))(define cfunc (curry func 4))(func 1 2 3 4) == (cfunc 1 2 3 4) == ((cfunc 1 2) 3 4) == ((((cfunc 1) 2) 3) 4) == ...
apply is compatible with it, so you could apply a partial list of arguments.
(define partially (apply cfunc '(1 2)))(partially 3 4) == (func 1 2 3 4)