3

一部のclojureコードでは、エイリアス名前空間を使用してclojure.coreの除算関数「/」を参照したいと思います。これは、内部的にコア関数を使用しながら、いくつかの数学関数のカスタム実装を作成したいという事実によるものです。

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

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

ただし、これによりエラーが発生します:「無効なトークン:コア//」

他の数学関数はこのように機能します(core / + core / *)。

コア分割関数をどのように参照できますか?

4

2 に答える 2

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
于 2013-03-22T20:52:41.987 に答える
1

clojure1.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 
于 2013-03-22T20:54:35.517 に答える