mirror of
https://github.com/filebrowser/filebrowser.git
synced 2025-05-09 11:42:57 +00:00

Former-commit-id: bdede6ed1b6f578f2ef046c338caf02d0b29d453 [formerly 7187de361b53e9c8ec121df379b762f2db736ea2] Former-commit-id: 447d58460fbbfd05ffe08428a1288e392637561d
20 lines
512 B
Haskell
20 lines
512 B
Haskell
-- Type annotation (optional)
|
|
fib :: Int -> Integer
|
|
|
|
-- With self-referencing data
|
|
fib n = fibs !! n
|
|
where fibs = 0 : scanl (+) 1 fibs
|
|
-- 0,1,1,2,3,5,...
|
|
|
|
-- Same, coded directly
|
|
fib n = fibs !! n
|
|
where fibs = 0 : 1 : next fibs
|
|
next (a : t@(b:_)) = (a+b) : next t
|
|
|
|
-- Similar idea, using zipWith
|
|
fib n = fibs !! n
|
|
where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
|
|
|
|
-- Using a generator function
|
|
fib n = fibs (0,1) !! n
|
|
where fibs (a,b) = a : fibs (b,a+b) |