
On Thu, Apr 8, 2010 at 12:58 PM, Tim Sears
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
Or, if you don't want to allow different "nested-ness": data Nested a = One a | Nest (Nested [a]) Examples of data types: One a :: Nested a Nest (One [a,b,c]) :: Nested a Nest (Nest (One [[a,b],[c,d]])) :: Nested a fromList :: [a] -> Nested a fromList = Nest . One fromList2 :: [[a]] -> Nested a fromList2 = Nest . Nest . One The functor instance: instance Functor Nested where fmap f (One a) = One (f a) fmap f (Nest xs) = Nest (fmap (fmap f) xs) Not tested, use at your own risk ;). Cheers, -- Felipe.