0xA*_*xAX 2 function list clojure
如果元素存在于list中,我尝试编写返回true的函数,否则返回false.
我的代码:
(defn is_member [elem ilist]
((elem []) false)
(if (= elem (first (list ilist)))
(true)
(is_member elem (rest (list ilist)))
)
)
Run Code Online (Sandbox Code Playgroud)
我尝试运行它:
(is_member 1 '(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)
但得到错误:
#<CompilerException java.lang.ClassCastException: java.lang.Integer cannot be cast to clojure.lang.IFn
Run Code Online (Sandbox Code Playgroud)
怎么了?我该如何解决?
谢谢.
看起来你是来自一种比Clojure更广泛的模式匹配的语言; ((elem []) false)在Clojure中基本上是无稽之谈.相反,只测试是否ilist为空.
还有许多其他错误,所以这里有一个实际上可用的片段,尽可能接近您的预期:
(defn is_member [elem ilist]
(cond (empty? ilist) false
(= elem (first ilist)) true
:else (is_member elem (rest ilist))))
Run Code Online (Sandbox Code Playgroud)