2
我嘗試編寫函數,如果元素存在於列表中,則返回true;否則返回false。Clojure列表成員轉換錯誤
我的代碼:
(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
有什麼不對?我該如何解決它?
謝謝。
+1了很好的答案,一個額外的一點是,我會建議在最後一行使用「recur」而不是「is_member」,因爲該函數是尾遞歸的,並且顯然可以從這種優化中受益。 – mikera
+1,因爲我不懂Clojure的相關代碼! –