haskell pretty-print

haskell - ¿Qué bonita biblioteca de impresión?



pretty-print (1)

Sin ningún orden en particular:

  • El "Gratis" en Text.PrettyPrint.Free significa mónada gratuita , según la descripción del paquete: "Una mónada gratuita basada en la bonita impresora Wadler / Leijen"; su tipo de documento está parametrizado en otro tipo, y tiene una instancia de Monad , que le permite incrustar "efectos" en los valores de Doc . Esto es utilizado por wl-pprint-terminfo para agregar funcionalidad de formateo; no es un paquete que compite, sino una biblioteca de extensión del mismo autor. Consulte la lista de adiciones en la documentación de wl-pprint-extras comparada con la lista de wl-pprint para obtener información más detallada sobre lo que agrega.

  • wl-pprint-terminfo usa el paquete terminfo para formatear, por lo que solo funcionará en sistemas POSIX-y, mientras que ansi-wl-pprint usa el paquete ansi-terminal , por lo que funcionará en Windows.

  • wl-pprint-text puede ser útil si ya está trabajando con Text , pero es poco probable que tenga un gran impacto en el rendimiento a menos que esté utilizando realmente la impresora bonita; no es exactamente una tarea masivamente computacionalmente intensiva.

A menos que tuviera requisitos específicos, probablemente solo usaría el paquete bonito, ya que es uno de los paquetes de arranque y, por lo tanto, está disponible en todas partes. Yo buscaría ansi-wl-pprint si quisiera formatear, y wl-pprint-text si estuviese trabajando con Text , pero de lo contrario no veo una razón particularmente convincente para usar una biblioteca de terceros.

Así que de un vistazo a hackage puedo ver 5 lindas bibliotecas de impresión:

  • bueno viejo HughesPJ en bonita
  • wl-pprint-extras
  • wl-pprint-terminfo
  • wl-pprint
  • ansi-wl-pprint
  • wl-pprint-text

Oh espera, ¿eran 6? 6 lindas bibliotecas de impresión ... no, espera, entraremos de nuevo.

De todos modos, todos son Wadler-Leijen excepto por supuesto HughesPJ. Tengo entendido que WL es más simple y más rápido, por lo que probablemente se prefiera para el nuevo código.

wl-pprint y wl-pprint-extras parecen ser lo mismo ... No puedo decir qué es "extra" sobre lo último, o qué significa "Gratis" aquí (el módulo es Text.PrettyPrint.Free).

wl-pprint-terminfo y ansi-wl-pprint parecen ser variantes con colores de terminal ANSI y otras cosas, y parecen equivalentes, excepto que wl-pprint-terminfo no tiene ningún documento.

wl-pprint-text, por supuesto, usa Text. No sé cuánta diferencia realmente hace que la velocidad sea increíble.

Lo que más me preocupa es que muchos de ellos tienen muchos lanzamientos. Esto implica que tienen funciones añadidas, errores corregidos, etc. ¿Pero se han corregido todos los mismos errores? Me inclino a favor de ansi-wl-pprint porque tiene documentación y su última carga fue en 2012, y tiene varias versiones que implican que el autor aún trabaja en ella.

Pero no estoy seguro. Alguien tiene algún consejo? Y estoy seguro de que otros están de acuerdo en que 5 módulos de copiar y pegar casi-pero-no-bastante podrían hacer con cierta consolidación ...