如何使Clojure的数'()
为nil
?
例如:如何制作类似的东西
(if '() :true :false)
;to be
:false
;Or easier
(my-fun/macro/namespace/... (if '() :true :false))
:false
Run Code Online (Sandbox Code Playgroud)
而不仅仅是.各方面.
(= nil '()) or (my-something (= nil '()))
true
Run Code Online (Sandbox Code Playgroud)
每个代码都是(='()nil)保存.
(something (+ 1 (if (= nil '()) 1 2)))
2
Run Code Online (Sandbox Code Playgroud)
我在考虑某种自然的表达方式.哪个会看代码并替换'()
为nil
,但是有些东西(rest '(1))
和许多其他东西一样'()
,我不知道如何处理它.
有人告诉我,宏可以让你建立自己的语言.我想通过改变clojure来尝试它.所以这很大关于"如何使用clojure以及如何改变它?" 而不是"我真的需要它为我的工作."
谢谢你的帮助.
mik*_*era 10
'()
只是不一样nil
- 你为什么要这样做?
你可能正在寻找的是seq
函数,如果给出一个空集合,则返回nil:
(seq [1 2 3])
=> (1 2 3)
(seq [])
=> nil
(seq '())
=> nil
Run Code Online (Sandbox Code Playgroud)
seq
因此经常被用来测试"空虚",成语如下:
(if (seq coll)
(do-something-with coll)
(get-empty-result))
Run Code Online (Sandbox Code Playgroud)