Иногда мне кажется удобным определять в Clojure версии функций с уменьшенной арностью, которые возвращают частичную функцию, например
(defn prefix
([pre string]
(str pre ":" string))
([pre]
(fn [string]
(prefix pre string))))
Это означает, что вы можете сделать следующее:
(prefix "foo" 78979)
=> "foo:78979"
((prefix "foo") 78979)
=> "foo:78979"
Это кажется довольно похожим на Haskell и позволяет избежать необходимости partial
для создания частичных функций
Но считается ли это хорошим стилем кодирования/API дизайн на Лиспе?