簡體   English   中英

引用clojure.core時出錯//(除)

[英]Error when refering to clojure.core// (divide)

在一些clojure代碼中,我想引用clojure.core中帶有別名命名空間的除法函數“/”。 這是因為我想為一些數學函數編寫自定義實現,而內部仍然使用核心函數。

(ns mynamespace
  (:refer-clojure :exclude [ / ])
  (:require [clojure.core :as core])

(defn / [x y]
  (core// x y))

但是,這會導致錯誤:“無效令牌:核心//”

其他數學函數以這種方式工作(core / + core / *)。

我怎樣才能參考核心除法函數?

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

如果你在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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM