nFibbo :: [x] -> [x]
nFibbo x = x ++ sum x
我试图设置一个Fibonacci函数,我希望输入是一个不确定长度的整数数组,并且它的输出是一个1+长度的整数数组。
我试过根本不打字并运行
nFibbo x = x ++ sum x
但是出现了不同的错误"无法构建无限类型:a ~ [a]
"
答案 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>