Предположим, что у меня есть запись, которая является "функциональной", по крайней мере, в том смысле, что она представляет собой операцию, которая может быть применена к некоторым аргументам.
Я могу заставить его работать как функция, реализуя clojure.lang.IFn
, что-то вроде:
(defrecord Func [f x]
clojure.lang.IFn
(invoke [this arg]
(f x arg))
(applyTo [this args]
(apply f x args)))
((->Func + 7) 1)
=> 8
(да, я знаю, что я только что переопределил более низкую версию partial
.... это просто пример:-))
Является ли практика записи clojure.lang.IFn
хорошей практикой или нет?
Любые подводные камни к этому подходу?