on master help sign in
src/LAoP/Matrix/Internal.hs+21−18
since splitsnapshots
unifiedsplit
@@ -789,35 +789,38 @@ corr p = let f = fromF' p :: Matrix e q ()
789
789
790-- Pretty print
790-- Pretty print
791
791
792−fill :: Show e => [[e]] -> String -> String
792+prettyAux :: Show e => [[e]] -> [[e]] -> String
793−fill m str = replicate (widest - length str - 2) ' ' ++ str
793+prettyAux [] _ = ""
794+prettyAux [[e]] m = "│ " ++ fill (show e) ++ " │\n"
794 where
795 where
795− v = fmap show m
796+ v = fmap show m
796− widest = maximum $ fmap length v
797+ widest = maximum $ fmap length v
797−
798−fill2 :: Show e => Matrix e cols rows -> String -> String
799−fill2 m str = replicate (widest - length str - 2) ' ' ++ str
798+ fill str = replicate (widest - length str - 2) ' ' ++ str
799+prettyAux [h] m = "│ " ++ fill (unwords $ map show h) ++ " │\n"
800 where
800 where
801− v = map show (toList m)
801+ v = fmap show m
802− widest = maximum $ map length v
802+ widest = maximum $ fmap length v
803−
803+ fill str = replicate (widest - length str - 2) ' ' ++ str
804−prettyAux :: Show e => [[e]] -> [[e]] -> String
805−prettyAux [] _ = ""
806−prettyAux [[e]] m = "│ " ++ fill m (show e) ++ " │\n"
807−prettyAux [h] m = "│ " ++ fill m (unwords $ map show h) ++ " │\n"
808−prettyAux (h : t) m = "│ " ++ fill m (unwords $ map show h) ++ " │\n" ++
804+prettyAux (h : t) l = "│ " ++ fill (unwords $ map show h) ++ " │\n" ++
809− prettyAux t m
805+ prettyAux t l
806+ where
807+ v = fmap show l
808+ widest = maximum $ fmap length v
809+ fill str = replicate (widest - length str - 2) ' ' ++ str
810
810
811-- | Matrix pretty printer
811-- | Matrix pretty printer
812pretty :: (CountableDims cols rows, Show e) => Matrix e cols rows -> String
812pretty :: (CountableDims cols rows, Show e) => Matrix e cols rows -> String
813pretty m = concat
813pretty m = concat
814 [ "┌ ", unwords (replicate (columns m) blank), " ┐\n"
814 [ "┌ ", unwords (replicate (columns m) blank), " ┐\n"
815 , unlines
815 , unlines
816− [ "│ " ++ unwords (fmap (\j -> fill2 m $ show $ getElem i j m) [1..columns m]) ++ " │" | i <- [1..rows m] ]
816+ [ "│ " ++ unwords (fmap (\j -> fill $ show $ getElem i j m) [1..columns m]) ++ " │" | i <- [1..rows m] ]
817 , "└ ", unwords (replicate (columns m) blank), " ┘"
817 , "└ ", unwords (replicate (columns m) blank), " ┘"
818 ]
818 ]
819 where
819 where
820+ strings = map show (toList m)
821+ widest = maximum $ map length strings
822+ fill str = replicate (widest - length str) ' ' ++ str
820− blank = fill2 m ""
823+ blank = fill ""
821 safeGet i j m
824 safeGet i j m
822 | i > rows m || j > columns m || i < 1 || j < 1 = Nothing
825 | i > rows m || j > columns m || i < 1 || j < 1 = Nothing
823 | otherwise = Just $ unsafeGet i j m (toList m)
826 | otherwise = Just $ unsafeGet i j m (toList m)