emacs 中的 ClojureScript REPL 打印出额外的 ^Ms 和 nils
ClojureScript REPL in emacs printing out extra ^Ms and nils
我是 ClojureScript 新手,使用 emacs、cider、cljsbuild,以及 austin 在 Windows 机器上使用 slimerjs。我注意到,有时当我输入 clojurescript repl 时,输出会附加一个额外的 ^M
字符和 nil
(但 return 值不是 nil,如下面附上的 repl 的输出)。 ^M
之前的输出为红色,而 nil
之前的输出为黑色。是什么原因造成的,我该如何解决? (我是否应该将此作为问题报告给项目的跟踪者之一?)
cljs.user> 1
1
cljs.user> true
true
cljs.user> (reduce + [1 2 3])
6
cljs.user> (list [1 2 3])
([1 2 3])
cljs.user> reduce
#<function (a,e,f){switch(arguments.length){case 2:return b.call(this,
a,e);case 3:return c.call(this,a,e,f)}throw Error("Invalid arity: "+arguments.length);}>^M
nil
cljs.user> js/document
#<[object HTMLDocument]>^M
nil
cljs.user> (def d js/document)
#<[object HTMLDocument]>^M
nil
cljs.user> (nil? d)
false
^M 是 windows 行尾。回答如何在Emacs中隐藏它可以找到here。
nil
的打印通常是正常行为,并不特定于 Clojurescript 或 Emacs。所有形式 return 一个值(可能是 nil
)并且还可能产生副作用:
cljs.user> (println 1)
1 ; Side effect - printed value
nil ; Result of evaluation
然而 returning nil
用于 js/document
、(def d js/document)
和类似的 "not-nil" 形式是 Austin 特定的行为,可能可以被视为小错误。
我是 ClojureScript 新手,使用 emacs、cider、cljsbuild,以及 austin 在 Windows 机器上使用 slimerjs。我注意到,有时当我输入 clojurescript repl 时,输出会附加一个额外的 ^M
字符和 nil
(但 return 值不是 nil,如下面附上的 repl 的输出)。 ^M
之前的输出为红色,而 nil
之前的输出为黑色。是什么原因造成的,我该如何解决? (我是否应该将此作为问题报告给项目的跟踪者之一?)
cljs.user> 1
1
cljs.user> true
true
cljs.user> (reduce + [1 2 3])
6
cljs.user> (list [1 2 3])
([1 2 3])
cljs.user> reduce
#<function (a,e,f){switch(arguments.length){case 2:return b.call(this,
a,e);case 3:return c.call(this,a,e,f)}throw Error("Invalid arity: "+arguments.length);}>^M
nil
cljs.user> js/document
#<[object HTMLDocument]>^M
nil
cljs.user> (def d js/document)
#<[object HTMLDocument]>^M
nil
cljs.user> (nil? d)
false
^M 是 windows 行尾。回答如何在Emacs中隐藏它可以找到here。
nil
的打印通常是正常行为,并不特定于 Clojurescript 或 Emacs。所有形式 return 一个值(可能是 nil
)并且还可能产生副作用:
cljs.user> (println 1)
1 ; Side effect - printed value
nil ; Result of evaluation
然而 returning nil
用于 js/document
、(def d js/document)
和类似的 "not-nil" 形式是 Austin 特定的行为,可能可以被视为小错误。