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 ¦
 --- --- ---

questionAnswers(1)

yourAnswerToTheQuestion