不确定如何在haskell中键入我的函数

时间:2017-07-23 18:19:44

标签: haskell fibonacci

nFibbo :: [x] -> [x]
nFibbo x = x ++ sum x

我试图设置一个Fibonacci函数,我希望输入是一个不确定长度的整数数组,并且它的输出是一个1+长度的整数数组。

我试过根本不打字并运行

nFibbo x = x ++ sum x

但是出现了不同的错误"无法构建无限类型:a ~ [a]"

1 个答案:

答案 0 :(得分:2)

嗯,这很奇怪,因为:

如果x是数组[a],那么sum x将是a(++) :: [a] -> [a] -> [a]函数有两个列表,而不是列表和元素。

但是,你可以构建一个包含一个元素的列表,例如使用列表语法:

nFibbo :: Num x => [x] -> [x]
nFibbo x = x ++ [sum x]  -- list with one element

请注意,您将在此处添加所有以前元素的总和作为最后一个元素。不是最后一个两个元素的总和(就像Fibonacci通常那样)。

您还需要添加Num x类型约束,否则列表中元素的类型本身不是数字类型,因此您无法计算这些数字的sum。 / p>