Brian Mitchell wrote: > Other's solutions should work great but just for fun and enlightenment > I wrote my own little implementation of a simple list comprehension in > Haskell .... You might also find fun in what 'sequence' does in the List monad: Prelude> :t sequence sequence :: (Monad m) => [m a] -> m [a] Prelude> mapM_ print $ sequence [[192], [168], [0,1], [1..10]] [192,168,0,1] [192,168,0,2] [192,168,0,3] [192,168,0,4] [192,168,0,5] [192,168,0,6] [192,168,0,7] [192,168,0,8] [192,168,0,9] [192,168,0,10] [192,168,1,1] [192,168,1,2] [192,168,1,3] [192,168,1,4] [192,168,1,5] [192,168,1,6] [192,168,1,7] [192,168,1,8] [192,168,1,9] [192,168,1,10] Cheers, Tom