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)))
  )
)
我尝试运行它:
(is_member 1 '(1,2,3,4))
但得到错误:
#<CompilerException java.lang.ClassCastException: java.lang.Integer cannot be cast to clojure.lang.IFn 
怎么了?我该如何解决?
谢谢.
看起来你是来自一种比Clojure更广泛的模式匹配的语言; ((elem []) false)在Clojure中基本上是无稽之谈.相反,只测试是否ilist为空.
还有许多其他错误,所以这里有一个实际上可用的片段,尽可能接近您的预期:
(defn is_member [elem ilist]
  (cond (empty? ilist) false
        (= elem (first ilist)) true
        :else (is_member elem (rest ilist))))