Si sólo enlaza la variable que hacer obtener el valor correcto y no lo usa dos veces hay una otra manera lo puede hacer. Hay una función en el núcleo llamada fnil
.
Llama al fnil
con la función que desea llamar y el argumento predeterminado. Esto devolverá una función que reemplazará nils con el valor predeterminado que proporcionó.
El puede hacer una de las cosas dependiendo de lo que quiera. Crea una función local.
(let [default-fn (fnil fn-you-want-to call "default-argument")]
(default-fn input-argument))
En somecases (donde siempre tienen el mismo argumento por defecto) se puede mover a la lógica de hacer esto fuera de su código y ponerlo donde a la función original (o envoltura de la función en caso de que en una otra biblioteca).
(defn fn-you-want-to-call [arg] ....)
(def fn-you-want-to-call-default (fnil fn-you-want-to-call "default-argument"))
Luego, en el código de su reducido a sólo
(fn-you-want-to-call-default input-argument)
Más usted puede encontrar aquí: http://clojuredocs.org/clojure_core/clojure.core/fnil
Si lo hace mucho, en particular, con argumentos de entrada, entonces tal vez usted está sin saber que puede definir [varias firmas] (http://stackoverflow.com/questions/3208347/how-to-create-default-value-for-function-argument-in-clojure) para una función. – coredump