{-# LANGUAGE MultiParamTypeClasses, TypeSynonymInstances #-} module Output where import LineStorage import Word import qualified Data.IntMap as IntMap class Output s t r where print_ :: (Word e) => (s (t (r e))) -> IO () showLS (ListStorage e) = map toString e s2 (ListStorage s) = unlines $ map unwords $ map showLS s instance Output StorageList StorageList StorageList where print_ (ListStorage s) = print $ unlines $ map s2 s instance Output StorageMap StorageMap StorageMap where print_ m = print $ unlines $ IntMap.elems $ IntMap.map (unlines . IntMap.elems . IntMap.map (unwords . IntMap.elems . IntMap.map toString)) m