【发布时间】:2011-03-03 07:37:08
【问题描述】:
我刚刚涉足 Haskell 世界,作为我的编程启蒙之旅的一部分(从程序性到 OOP 再到并发到现在的功能性)。
我一直在尝试在线Haskell Evaluator。
但是我现在遇到了一个问题:
创建一个给出数字数组总和的简单函数。
在程序语言中,这对我来说很容易(使用递归)(c#):
private int sum(ArrayList x, int i)
{
if (!(x.Count < i + 1)) {
int t = 0;
t = x.Item(i);
t = sum(x, i + 1) + t;
return t;
}
}
一切都很好,但是我在 Haskell 的失败尝试是这样的:
let sum x = x+sum in map sum [1..10]
这导致了以下错误(来自上述网站):
Occurs check: cannot construct the infinite type: a = a -> t
请记住,我在过去 30 分钟内只使用了 Haskell!
我不是在寻找一个简单的答案,而是对它的更多解释。
【问题讨论】:
标签: haskell recursion types functional-programming