Types 获取列表clojure中元素的类型
我有一个引用的表达Types 获取列表clojure中元素的类型,types,clojure,quote,Types,Clojure,Quote,我有一个引用的表达 (def foo '(+ 1 (bar))) 我希望能够找到此列表中任何元素的类型,例如 (type (second foo)) 根据值的类型,我会得到不同的结果,例如,下面的两个值都计算为java.lang.Double,这正是我想要的 (type '3.0) (type 3.0) 然而 分别产生 clojure.lang.Symbol clojure.core$_PLUS_ 我想也许解决问题的钥匙会有所帮助 (type (resolve '+)) 评估结果为:
(def foo '(+ 1 (bar)))
我希望能够找到此列表中任何元素的类型,例如
(type (second foo))
根据值的类型,我会得到不同的结果,例如,下面的两个值都计算为java.lang.Double,这正是我想要的
(type '3.0)
(type 3.0)
然而
分别产生
clojure.lang.Symbol
clojure.core$_PLUS_
我想也许解决问题的钥匙会有所帮助
(type (resolve '+))
评估结果为:
clojure.lang.Var列表中只有符号
'+
,'bar
和自评估对象1
(长)
(= '(+ 1 (bar))
(list '+ '1 (list 'bar)))
=> true
使用eval
(type (eval '+))
=> clojure.core$_PLUS_
及
因为数字是自评估对象。取消对已解析变量的引用:
(type (deref (resolve '+)))
哎呀!已修复,但(类型(解析“+))的值仍然是clojure.lang.Var。我怎样才能从这里到clojure.core$\u PLUS_
(type '3.0) = (type 3.0) = (type (eval '3.0)) = java.lang.Double
(type (deref (resolve '+)))