On Sat, Jan 30, 2010 at 9:38 PM, Daniel Fischer <[email protected]> wrote: >> Also, is there a more direct way of printing an array? > > Sure, > > printing immutable arrays: > > print arr ~> array (lo,hi) [(lo,arr!lo), ... , (hi,arr!hi)] > print (assocs arr) ~> [(lo,arr!lo), ... , (hi,arr!hi)] > print (elems arr) ~> [(arr!lo), ... , (arr!hi)]
Those are all fine. > > printing IO[U]Arrays: > > do immArr <- freeze arr > print (immArr :: [U]Array ix el) > > do ass <- getAssocs arr > print ass > > (getAssocs arr >>= print) > > do els <- getElems arr > print els > On the other hand, all those suggestions have a severe efficiency problem due to the IO Monad strictness, for instance (getAssocs arr >>= print) will start by creating the whole list of associations before printing any of it. More efficient and still better than the initial code would be : mapM_ (readArray arr >=> print) [1..9] -- Jedaï _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
