@@ -517,11 +517,19 @@ corr p = let f = fromF p :: Matrix e q q
517517prettyAux :: Show e => [[e]] -> String
518518prettyAux [] = ""
519519prettyAux [[e]] = show e
520−prettyAux [h] = concat $ intersperse " " (map show h)
521−prettyAux (h : t) = concat (intersperse " " (map show h)) ++ "\n" ++ prettyAux t
522−
523−pretty :: Show e => Matrix e cols rows -> String
524−pretty = prettyAux . toLists
520+prettyAux [h] = "│ " ++ unwords (map show h) ++ " │\n"
521+prettyAux (h : t) = "│ " ++ unwords (map show h) ++ " │\n" ++
522+ prettyAux t
523+
524+pretty :: (KnownNat (Count cols), Show e) => Matrix e cols rows -> String
525+pretty m = "┌ " ++ unwords (replicate (columns m) blank) ++ " ┐\n" ++
526+ (prettyAux . toLists $ m) ++
527+ "└ " ++ unwords (replicate (columns m) blank) ++ " ┘"
528+ where
529+ v = fmap show (toList m)
530+ widest = maximum $ fmap length v
531+ fill str = replicate (widest - length str) ' ' ++ str
532+ blank = fill ""
525533
526−prettyPrint :: Show e => Matrix e cols rows -> IO ()
534+prettyPrint :: (KnownNat (Count cols), Show e) => Matrix e cols rows -> IO ()
527535prettyPrint = putStrLn . pretty