haskell执行序列

时间:2014-11-25 22:41:32

标签: haskell functional-programming sequence ml

我刚开始使用Haskell而且我正在努力!!!

所以我需要创建一个具有公式
的Haskell列表    F(n)=(F(n-1)+ F(n-2))* F(n-3)/ F(n-4) 我有F(0)= 1,F(1)= 1,F(2)= 1,F(3)= 1

所以我想初始化列表的前4个元素,然后创建一个运行n> 4的递归函数,并将值附加到列表中。

我的代码看起来像这样

let F=[1,1,1,1]

fib' n F
    | n<4="less than 4"
    |otherwise = (F(n-1)+F(n-2))*F(n-3)/F(n-4) : fib (n-1) F

我的代码在概念上看起来对我来说(虽然不确定)但是在编译时我得到了一个不正确的缩进错误。我是否可以按照我的方式初始化列表中的元素?

1 个答案:

答案 0 :(得分:3)

首先,Haskell中的变量必须是小写的。其次,Haskell并不能让你自由地混合整数和分数,就像你习惯于使用无类型或几乎没有类型的语言一样。如果您想要从IntInteger转换为Double,则需要使用fromIntegral。第三,你不能在需要数字的环境中粘贴一个字符串。第四,您可能有也可能没有缩进问题 - 请确保不要在Haskell文件中使用制表符,并使用GHC选项-fwarn-tabs来确定。

现在我们了解问题的核心:你这一切都有些错误。我会给你一个提示,而不是一个完整的答案:

thesequence = 1 : 1 : 1 : 1 : -- Something goes here that *uses* thesequence