Я программист на Python, изучающий Clojure. В Python я люблю, как я могу использоваться именованные аргументы в вызове functools.partial:Частичные и именованные аргументы в Clojure
def pow(base, exponent):
return base ** exponent
exp = partial(pow, 2.71828) # exp(2) --> 7.3886
square = partial(pow, exponent=2) # square(2) --> 4
Реализация exp
является, очевидно, эквивалентно в Clojure - но я мог использовать partial
определить square
лаконично, тоже? Есть ли способ передать в ключевом слове/named аргументы частичным, чтобы определенный аргумент был заранее определен? Или это должно быть обработано не partial
, а литералом функции, например. #(pow % 2)
?
Короткий ответ: Это не идиоматическое. Предпочтение Clojure для отправки по количеству аргументов связано с тем, что JVM может эффективно реализовать (деструктурирование значительно дороже в сравнении); чем дальше вы получаете от этого, тем больше страдает ваш код. –