Mostrar instancia para matriz en Haskell
He estado tratando de crear una instancia de show para visualizar una matriz dada y también, para crear un esquema con columnas alrededor y entre la matriz. Lo que logré lograr hasta ahora es lo siguiente:
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)
Asumiendo que tenemos una matrizMat [[1,2,3],[4,5,6]]
que nos gustaría probar
El resultado de la línea de comando es el siguiente:
---
¦ 1 ¦ 2 ¦ 3 ¦
---
¦ 4 ¦ 5 ¦ 6 ¦
---
Lo que me gustaría lograr es formatear la matriz dada con líneas horizontales sobre el resto de cada columna, así:
--- --- ---
¦ 1 ¦ 2 ¦ 3 ¦
--- --- ---
¦ 4 ¦ 5 ¦ 6 ¦
--- --- ---