我正在寻找pedantic方法来测试某物是否为Atom,例如Clojure中的(atom? ...)
谓词,类似于(number? ...)
,(string? ...)
,(vector? ...)
族等等
给出原子是Clojure的主要语言功能,它是用(atom ...)
创建的,我不得不编写自己的自定义函数来测试内部实现类,这是错误的。例如,
(atom ...)
我缺少更多正确的范例或内置语言功能吗?
注意:此问题无关,与Scheme的“原子” (defn atom? [a] (= (type a) clojure.lang.Atom))
不同,它们是非null的cos对。
我已经写了很多函数。我认为这是最好的解决方案。
我会使用(atom? ...)
,甚至不用费心写谓词。
我还要提醒您,如果您觉得需要在运行时编写以对象类型为条件的代码,则可能要退后一步,想出另一种方法来解决问题:也许是协议或多-方法可以让您以更惯用的方式调度对象类型?