Project Euler problem 2 in Haskell
Just a few things to point out.

There is a prelude function print that is defined print = putStrLn . show.

Additionally, using "do-notation" in this case is unnecessary as you aren't sequencing multiple IO actions.

main can be rewritten in a more point-free style using the function composition operator:

main = print . sum . filter odd . takeWhile (&lt; 4000000) $ fibonacci


I might rewrite fibonacci like this (removes nested where clauses):

fibonacci :: [Int]
fibonacci = next 1 1
  where next x y = x : next y (x + y)


And here are a bunch of other ways to define fibonacci. One interesting way that is possible because of Haskell's laziness:

fibonacci = 1 : 1 : zipWith (+) fibonacci (tail fibonacci)