[The comment is correct; this answer is not currying, it is partial evaluation.]
Just so you know, you don't need to use define-syntax
to support currying. Generally using syntax when you don't need to is frowned upon because 1) syntax introduces different evaluation rules and 2) syntax can't be used as a value.
Here are two implementations, one for (left) curry and one for right curry:
(define (curry func . curry-args)
(lambda args
(apply func (append curry-args args))))
(define (rcurry func . curry-args)
(lambda args
(apply func (append args curry-args))))
Use this as for example:
> (define add-5 (curry + 5))
> (add-5 5)
10