This is my solution in Haskell to the second problem:
I still get a bit dizzy when I think about the second solution...
You will find a great explanation of the second solution in this post:
Fibonacci numbers: the slow way or the fast and lazy way
You'll find the solutions in Haskell to Project Euler problems that I've done so far in this GitHub repository.