我非常綠色的Clojure。但我試圖通過創建一些函數來學習語法。我有括號和一般的語法問題...Clojure的錯誤調用遞歸函數 - 最有可能是括號問題
此功能應該採取列表和位置,並返回與該位置刪除列表 - 但我得到的是我不知道的錯誤充分認識。我已經做了一些閱讀,它似乎是嵌套括號的問題..但我不知道如何解決它。
任何反饋,將不勝感激。
錯誤:
ClassCastException java.lang.Long cannot be cast to clojure.lang.IPersistentCollection clojure.core/conj (core.clj:83)
代碼:
(defn delete-at
"accepts a list and position--returns the list with
value at that position removed"
(
[L, pos]
(cond
(empty? L) nil
(zero? pos) (rest L)
:else (
delete-at (first L) (rest L) (- pos 1))
)
)
([L-new, L2, pos]
(cond
(zero? pos) (conj L-new (rest L2))
:else (
(delete-at (conj L-new (first L2)) (rest L2) (- pos 1))
)
)
)
)
Clojure中的括號或任何其他Lisp在這方面與C族語言中的花括號不同。你設計你的代碼的方式似乎表明你相信他們是。看看這裏:http://hitchhikersclojure.com/blog/hitchhikers-guide-to-clojure/對Clojure語法的介紹。 – 2015-02-07 01:55:15