Подтвердить что ты не робот

Какая красивая печатная библиотека?

Итак, с первого взгляда на хакеры я вижу 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 практически полностью несовместимых модулей копирования-пасты могут сделать с некоторой консолидацией...

4b9b3361

Ответ 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, но в остальном я действительно не вижу особо веской причины использовать стороннюю библиотеку.