Clojure reduce 无法将 Long 转换为 IFn
Clojure reduce unable to cast Long to IFn
这个周末我决定学习clojure。我坚持使用 reduce.I 为
获取 class 转换异常
(reduce #((cond (= %1 0) %2 :else %1)) 0 '(1 1 1))
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval2092/fn--2093 (form-init1869535703328200664.clj:1)
我不确定我到底做错了什么。感谢您的帮助:)
函数文字 reader 宏 #( ... )
自动为主体中的表达式提供括弧,因为它通常是一个简单的函数应用程序。在您的情况下,cond
被扩展为数值 1
,然后括号将其变成 (1)
,这不是有效的函数应用程序。
删除内括号:
(reduce #(cond (= %1 0) %2 :else %1) 0 '(1 1 1))
这个周末我决定学习clojure。我坚持使用 reduce.I 为
获取 class 转换异常(reduce #((cond (= %1 0) %2 :else %1)) 0 '(1 1 1))
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval2092/fn--2093 (form-init1869535703328200664.clj:1)
我不确定我到底做错了什么。感谢您的帮助:)
函数文字 reader 宏 #( ... )
自动为主体中的表达式提供括弧,因为它通常是一个简单的函数应用程序。在您的情况下,cond
被扩展为数值 1
,然后括号将其变成 (1)
,这不是有效的函数应用程序。
删除内括号:
(reduce #(cond (= %1 0) %2 :else %1) 0 '(1 1 1))