Нет, потому что функции, созданные частично, являются просто "нормальными" функциями.Однако вы могли бы использовать для этого некоторые метаданные, например:
(defn partial2 [f & more]
(with-meta (apply partial f more) {:partial true}))
(def partial-plus (partial2 + 1 2))
(meta partial-plus) ;;=> {:partial true}
Хотя на самом деле не задумывались о последствиях этого подхода ...
Kotarak предложил более приятное решение, котороеработает, но не всегда.Например, возьмем это:
(partial? (partial + 1)) ;;=> true
(partial? (partial + 1 2)) ;;=> false
Это работает:
(defn partial? [f]
(let [[fst snd] (-> (class f) (.getName) (string/split #"\$"))]
(= ["clojure.core" "partial"] [fst snd])))
со строкой / split, являющейся функцией split из clojure.string (1.3) или clojure.contrib.str-utils2 (1.2).