If you don't mind choosing a different data type (always a good question to ask yourself in haskell) you could simply use your own nested lists....
data Nested a = One a | Nest [Nested a]
deriving Show
instance Functor Nested where
fmap f (One x) = One (f x)
fmap f (Nest xs) = Nest (map (fmap f) xs)
mapN :: (a -> b) -> Nested a -> Nested b
mapN = fmap
test = fmap (+1) $ Nest [One 1, Nest [ One 2, One 3], One 4 , Nest [ Nest [One 6]] ]
--yields test = Nest [One 2,Nest [One 3,One 4],One 5,Nest [Nest [One 7]]]