Ale*_*aro -3 haskell fibonacci
下来两个功能.一个计算一定数量的斐波那契,另一个尝试使用地图显示斐波纳契序列达到一定数量.当我键入斐波那契数字时会发生错误,例如斐波纳契8和抛出错误.我究竟做错了什么?
fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
fibonacci :: [Integer]
fibonacci = map fib [0..]
Run Code Online (Sandbox Code Playgroud)
当你使用时fibonacci,你正在写:
> fibonacci 8
(error)
Run Code Online (Sandbox Code Playgroud)
但是,fibonacci :: [Integer]- fibonacci不是一个功能,你不能称之为!fibonacci是一个无限列表,因此您必须使用基于列表的操作来获取特定数字.
列表索引运算符是(!!) :: [a] -> Integer -> a,所以使用:
> fibonacci !! 8
21
Run Code Online (Sandbox Code Playgroud)
您还可以使用take :: Integer -> [a] -> [a]前n个数字:
> take 8 fibonacci
[0,1,1,2,3,5,8,13]
Run Code Online (Sandbox Code Playgroud)
但是你可以这样做:
> fib 8
21
Run Code Online (Sandbox Code Playgroud)
因为fib :: Integer -> Integer 是一个功能.