Я бы предложил указать ваши дополнительные аргументы в виде коллекций:
(def additional-arg-map {
:english []
:hebrew ["rtl"]})
Затем вы можете использовать apply в вашей функции создания документа, что-то вроде:
(defn create-document [language]
(let [creator (creator-map language)
args (additional-arg-map language)]
(apply creator args)))
Обратите внимание, что альтернативный (или, возможно, дополнительный?) Подход заключается в определении функции переменной арности, если вы хотите, чтобы вызывающая сторона предоставляла конкретные дополнительные аргументы, например что-то вроде:
(defn create-document
([language]
.....handle no argument.....)
([language arg]
.....handle 1 argument.....)
([language arg & more-args]
.....handle more than one argument.....))