multiplicacion matrices arreglos haskell pretty-print

matrices - arreglos haskell



¿Cómo imprimo una tabla en Haskell? (1)

http://hackage.haskell.org/package/boxes

El paquete de cajas

Una biblioteca de impresión bonita para distribuir texto en dos dimensiones, utilizando un modelo de caja simple ...

Me gustaría imprimir una estructura de datos similar a una tabla en Haskell (una lista de columnas).

Por ejemplo...

Table [ StrCol "strings" ["a", "bc", "c"], IntCol "ints" [1, 30, -2], DblCol "doubles" [2.0, 4.5, -3.2]]

Debe hacer algo como ...

strings ints doubles "a" 1 2.0 "bc" 30 4.5 "c" -2 -3.2

Actualmente, he implementado esta funcionalidad en Text.PrettyPrint que viene con la versión más reciente de la plataforma Haskell. Desafortunadamente, el operador <+> orienta los documentos de varias líneas "en diagonal" entre sí.

p.ej

(text "a" $+$ text "b") <+> (text "c" $+$ text "d")

rinde como

a b c d

más bien que

a c b d

Como resultado, transpongo las celdas y las fusiono horizontalmente primero, luego verticalmente, pero esto hace que las columnas no estén alineadas.

En una pregunta antigua de impresión bonita , augustos se refiere a agregar más código para que las columnas se adapten automáticamente a la entrada más amplia.

Supongo que "sizedText" con la longitud máxima de cada columna haría esto, excepto que esta función no parece ser parte del módulo Haskell Platform Text.PrettyPrint (creo que está en el paquete Text.Pretty, muy relacionado ).

¿Cuál es la forma más simple y no pirata de implementar esta funcionalidad de impresión bonita? Esta es una pequeña parte de mi proyecto, así que me gustaría evitar escribir mi propia impresión bonita, y preferiría evitar las dependencias de los módulos si puedo.