Revision: 47086
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 1, 2011 00:44 by rtperson
Initial Code
fiblist = 0 : 1 : zipWith (+) fiblist (tail fiblist) -- you can access members of this list as follows: -- fiblist !! 10 -- (returns 55) -- fiblist !! 100 -- returns 354224848179261915075
Initial URL
http://www.haskell.org/haskellwiki/The_Fibonacci_sequence
Initial Description
I didn't invent this, but it's too cool a snippet not to capture. Here's a one-liner that will generate a list of Fibonacci numbers in linear time. EXPLANATION: the colon operator is used to add elements to a list, so it starts out adding on the two base cases, zero and one. After you have these two, you can mathematically generate the rest of the list. The zipWith function takes two lists and combines them using a function (in this case, addition). The two lists in question are fiblist (that is, the list you're currently generating) and "tail fiblist" (that is, every element of the list after the first element). The only reason this works is because Haskell's laziness gives it the ability to define infinite lists. Haskell will never even attempt to calculate the nth Fibonacci number until it is asked to do so.
Initial Title
Fibonacci List One-Liner in Haskell
Initial Tags
Initial Language
Haskell