(Haskell) Fibonacci List Oneliner

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.

  • Posted by on January 1st, 1970
This entry was posted in Haskell and tagged , , , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Why ask?