Какая красивая печатная библиотека?
Итак, с первого взгляда на хакеры я вижу 5 довольно печатных библиотек:
- добрый старый HughesPJ в хорошем состоянии
- з.д.-pprint-дополнения
- з.д.-pprint-TERMINFO
- з.д.-pprint
- ANSI-з.д.-pprint
- з.д.-pprint-текст
Ой, подождите, было что? 6 довольно печатных библиотек... нет, подождите, мы снова придем.
В любом случае, они все Вадлер-Лейен, за исключением, конечно, HughesPJ. Я понимаю, что WL проще и быстрее, поэтому, вероятно, предпочтительнее для нового кода.
wl-pprint и wl-pprint-extras кажутся одинаковыми... Я не могу сказать, что "лишнее" о последнем, или что здесь означает "Свободный" (модуль Text.PrettyPrint.Free).
wl-pprint-terminfo и ansi-wl-pprint оба кажутся вариантами с терминальными цветами ANSI и еще много чего, и кажутся эквивалентными, за исключением того, что wl-pprint-terminfo не имеет каких-либо документов.
wl-pprint-text, конечно, использует Text. Я не знаю, какая разница, что действительно заставляет скорость.
Меня беспокоит то, что многие из них имеют множество релизов. Это означает, что у них были добавленные функции, исправлены ошибки и т.д. Но все ли у них были исправлены те же ошибки? Я склонен поддержать ansi-wl-pprint, потому что у него есть документация, и его последняя загрузка была в 2012 году, и у вас есть куча релизов, из-за чего автор все еще работает над ней.
Но я не знаю точно. У кого-нибудь есть совет? И я уверен, что другие согласны с тем, что 5 практически полностью несовместимых модулей копирования-пасты могут сделать с некоторой консолидацией...
Ответы
Ответ 1
Без особого порядка:
-
"Свободный" в Text.PrettyPrint.Free
означает свободную монаду в соответствии с описанием пакета: "Свободная монада на основе Wadler/Leijen довольно принтер"; его тип Doc
параметризуется на другом типе и имеет экземпляр Monad
, позволяющий вставлять "эффекты" в значения Doc
. Это используется wl-pprint-terminfo для добавления функций форматирования; это не конкурирующий пакет, а скорее библиотека расширения того же автора. См. Список дополнений в документация wl-pprint-extras по сравнению с wl -pprint list для получения более подробной информации о том, что он добавляет.
-
wl-pprint-terminfo использует пакет terminfo для форматирования, поэтому он будет работать только на POSIX-y систем, тогда как ansi-wl-pprint использует пакет ansi-terminal, поэтому он будет работать в Windows.
-
wl-pprint-текст может быть полезен, если вы уже работаете с Text
, но вряд ли окажете серьезное влияние на производительность, если вы не используете довольно принтер по-настоящему сильно; это не совсем массово вычислительно-интенсивная задача.
Если у меня не было особых требований, я бы, вероятно, просто использовал симпатичный пакет, так как это один из загрузочных пакетов и, следовательно, доступен везде. Я бы пошел на ansi-wl-pprint, если бы хотел форматирования, и wl-pprint-text, если я работал с Text
, но в остальном я действительно не вижу особо веской причины использовать стороннюю библиотеку.