import Data.Functor.Identity (Identity (..))
fibs :: [Integer]
fibs = runIdentity (hsequence (repeat f))
where f [] = Identity 1
f [_] = Identity 1
f xs = Identity ((xs !! (i-1)) + (xs !! i))
where i = length xs-1