Problem Description
Link to Project Euler problem 2
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1,2,3,5,8,13,21,34,55,89, …
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
WARNING Solution ahead. Don’t read more if you want to enjoy the benefits of Project Euler and you haven’t already solved the problem.
Solution
There are many ways to express the Fibonacci sequence in Haskell.
If we choose one of the most famous, which makes good use of Haskell lazy lists:
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
We can simply take the Fibonacci numbers up to four million, filter the even ones and sum the result.
solution = (sum . filter even . takeWhile (<4000001)) fibs
You can find the Literate Haskell code on GitHub and on Bitbucket.