Я хотел бы красиво напечатать таблицу -как структуру данных в Haskell (список столбцов ).
Например...
Table [
StrCol "strings" ["a", "bc", "c"],
IntCol "ints" [1, 30, -2],
DblCol "doubles" [2.0, 4.5, -3.2]]
Должно отображаться что-то вроде...
strings ints doubles
"a" 1 2.0
"bc" 30 4.5
"c" -2 -3.2
В настоящее время я реализовал эту функциональность в Text.PrettyPrint, который поставляется с самой последней версией платформы Haskell. К сожалению, оператор ориентирует многострочные документы -«по диагонали» друг от друга.
Например,
(text "a" $+$ text "b") <+> (text "c" $+$ text "d")
отображается как
a
b c
d
, а не как
a c
b d
. В результате я перемещаю ячейки и объединяю их сначала по горизонтали, а затем по вертикали, но в результате столбцы не выравниваются.
В более старой таблице симпатичный -вопрос печати augustss относится к добавлению дополнительного кода, чтобы столбцы автоматически адаптировались к самой широкой записи.
Я предполагаю, что это сделает "sizedText" с максимальной длиной каждого столбца, за исключением того, что эта функция не является частью модуля Haskell Platform Text.PrettyPrint (связанный пакет Text.Pretty ).
Каков самый простой, не -хакерский способ реализации этой прекрасной -функциональности печати? Это небольшая часть моего проекта, поэтому я бы не хотел писать свою собственную красивую печать -и предпочел бы избегать зависимостей модулей, если это возможно.