在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>
答案 0 :(得分:5)
你想要in-ns
。 ns
主要用于创建新的命名空间,而in-ns
主要用于切换到现有的命名空间。从技术上讲,如果新命名空间不存在,它们都将创建一个新命名空间,但如果命名空间已经存在,in-ns
将不会尝试更改命名空间。
答案 1 :(得分:3)
我想您已经知道,通过emacs并使用CIDER,您可以使用此键绑定将repl缓冲区的命名空间切换到当前缓冲区的命名空间
C-c M-n.
当然,首先需要使用显式命名空间和exclusióndefine
的clj文件