更改为使用排除的命名空间

时间:2013-11-26 16:03:11

标签: clojure

在REPL中,有没有办法可以更改为名称空间,在其名称中排除核心功能,例如

(ns bla (:refer-clojure :exclude [==]))

无需重新输入排除,如下所示?

user> (ns bla)
IllegalStateException == already refers to: #'clojure.core.logic/== in namespace: bla  clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)
user> (ns bla (:refer-clojure :exclude [==]))
nil
bla>

2 个答案:

答案 0 :(得分:5)

你想要in-nsns主要用于创建新的命名空间,而in-ns主要用于切换到现有的命名空间。从技术上讲,如果新命名空间不存在,它们都将创建一个新命名空间,但如果命名空间已经存在,in-ns将不会尝试更改命名空间。

答案 1 :(得分:3)

我想您已经知道,通过emacs并使用CIDER,您可以使用此键绑定将repl缓冲区的命名空间切换到当前缓冲区的命名空间

C-c M-n.

当然,首先需要使用显式命名空间和exclusióndefine

的clj文件