clojure-defn模式匹配
我对clojure非常陌生,我想模拟clojure的clojure-defn模式匹配,clojure,Clojure,我对clojure非常陌生,我想模拟clojure的+,我写了如下内容: (defn sum ([] 0) ([x & xs] (+ x (sum xs)))) (sum 1 2 3 4) ; ERROR 这是不对的,就像在哈斯克尔,我会写 sum' :: [Int] -> Int sum' [] = 0 sum' (x:xs) = x + sum' xs clojure代码有什么问题?谢谢 正确答案如下: (defn sum ([] 0) ([x &a
+
,我写了如下内容:
(defn sum
([] 0)
([x & xs] (+ x (sum xs))))
(sum 1 2 3 4) ; ERROR
这是不对的,就像在哈斯克尔,我会写
sum' :: [Int] -> Int
sum' [] = 0
sum' (x:xs) = x + sum' xs
clojure代码有什么问题?谢谢 正确答案如下:
(defn sum
([] 0)
([x & xs] (+ x (apply sum xs))))
您使用一个参数(一个列表)调用函数,因此反复使用第二种情况,直到超过递归深度。啊,我明白了。谢谢!