在一些clojure代码中,我想引用clojure.core中带有别名命名空间的除法函数“/”。这是因为我想为一些数学函数编写自定义实现,而内部仍然使用核心函数。
(ns mynamespace
(:refer-clojure :exclude [ / ])
(:require [clojure.core :as core])
(defn / [x y]
(core// x y))
但是,这会导致错误:“无效令牌:核心//”
其他数学函数以这种方式工作(core / + core /*)。
如何参考核心除法函数?
答案 0 :(得分:1)
user=> (defn / [& args] :arg-slash-ye-matey!)
WARNING: / already refers to: #'clojure.core// in namespace: user,
being replaced by: #'user//
#'user//
user=> (/ 42 6)
:arg-slash-ye-matey!
user=> ((ns-resolve 'clojure.core '/) 42 6)
7
答案 1 :(得分:1)
如果你在clojure 1.5
中使用全名clojure.core //似乎有效user> (defn / [& args] (apply clojure.core// args))
WARNING: / already refers to: #'clojure.core// in namespace: user, being replaced by: #'user//
user> (/ 2 4)
1/2