变量不在范围内 - 尾递归和 - Haskell

时间:2017-05-02 17:47:45

标签: haskell recursion scope tail-recursion

我遇到了variable not in scope: m错误。 这应该是以尾递归方式对n个数字求和的代码。

zum :: Integer-> Integer 
zum n = add_sum m n where
add_sum :: Integer-> Integer-> Integer
add_sum m n
    | n == 0    = m
    | otherwise = add_sum (m+n) (n-1)

2 个答案:

答案 0 :(得分:1)

在代码的第二行

zum n = add_sum m n where

'米'没有定义。也许它的目的不是在那里,而是在那里需要0。

答案 1 :(得分:0)

这可能更干净?

sum n = go 0 n
     where go m 0 = m
           go m n = go (m+n) (n-1)


> sum 4
10