作爲編程啓蒙之旅的一部分(從程序到OOP到併發到現在的功能),我只是在Haskell的世界中蘸了我的腳趾。我一直在嘗試在線Haskell Evaluator。學習Haskell地圖,摺疊,循環和遞歸
不過我現在被困在了一個問題:
創建一個簡單的功能,讓數字數組的總和。
在程序語言這對我來說是很容易的(使用遞歸)(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!
我不是在尋找答案,而是更多地解釋它。
這是我正在尋找的全面解釋。閱讀完這本書並進一步閱讀後,我現在明白了一點。 – Darknight 2010-06-15 21:07:26