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