clojure定义模式匹配
我对clojure真的很陌生,我想从clojure模拟+
,我写了这样的东西:
(defn sum
([] 0)
([x & xs] (+ x (sum xs))))
(sum 1 2 3 4) ; ERROR
这是不正确的,就像在Haskell中,我可以写
sum' :: [Int] -> Int
sum' [] = 0
sum' (x:xs) = x + sum' xs
clojure代码有什么问题? 谢谢!
正确的如下:
(defn sum
([] 0)
([x & xs] (+ x (apply sum xs))))
你用一个参数,一个列表调用函数,从而一次又一次地触发第二种情况,直到超过递归深度。
链接地址: http://www.djcxy.com/p/82577.html