Generic list-like structures [Haskell]