Mostrar instância para matriz em Haskell
Eu tenho tentado criar uma instância de show para visualizar uma determinada matriz e também para criar um esboço com colunas ao redor e entre a matriz. O que eu consegui realizar até agora é o seguinte:
data Mat a = Mat [[a]]
instance (Show a) => Show (Mat a) where
show (Mat x) = "\n" ++ " ---\n"++unlines ( map (\r -> showRow r ++ "\n ---") x ) ++ "\n"
where
showRow list = "¦ "++unwords ( map (\v -> show v ++" ¦") list)
Assumindo que temos uma matrizMat [[1,2,3],[4,5,6]]
que gostaríamos de testar.
A saída da linha de comando é a seguinte:
---
¦ 1 ¦ 2 ¦ 3 ¦
---
¦ 4 ¦ 5 ¦ 6 ¦
---
O que eu gostaria de conseguir é formatar a matriz fornecida com linhas horizontais acima do restante de cada coluna, assim:
--- --- ---
¦ 1 ¦ 2 ¦ 3 ¦
--- --- ---
¦ 4 ¦ 5 ¦ 6 ¦
--- --- ---