I have written the following code which creates an infinite list of Fibonacci numbers:
fibs = 1:1:fib 1 1
where fib a b = a+b:fib b (a+b)
You can use zipWith to write your definition
fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)
edit: Ok, I dont think you can use foldl or foldr to create infinite list. Not in any simple imaginable sense. If you look at the simple definition of foldl
foldl f z [] = z
foldl f z (x:xs) = foldl f (f z x) xs
foldl never returns until it has exhausted the whole list. So a simple example like
g = foldl f [] [1..]
where
f xs a = xs ++ [a]
> take 10 g
will not work even and it will loop on forever.