哪个漂亮的打印库?

Eva*_*rge 40 haskell pretty-print

所以从瞥一眼hackage我可以看到5个漂亮的打印库:

  • 漂亮的老HughesPJ
  • WL-pprint,演员
  • WL-pprint-的terminfo
  • WL-pprint
  • ANSI-WL-pprint
  • WL-pprint文本

哦等等,那是6?6个漂亮的印刷图书馆......没等了,我们又来了.

无论如何,他们都是Wadler-Leijen,当然除了HughesPJ.我的理解是WL更简单,更快,因此可能是新代码的首选.

wl-pprint和wl-pprint-extras看起来是一样的...我不知道后者的"额外"是什么,或者"Free"在这里意味着什么(模块是Text.PrettyPrint.Free).

wl-pprint-terminfo和ansi-wl-pprint似乎都是具有ANSI终端颜色和诸如此类的变体,并且似乎是等效的,除了wl-pprint-terminfo没有任何文档.

wl-pprint-text当然使用Text.我不知道实际上有多快差异.

令我担心的是,他们中的许多人都有很多版本.这意味着他们已经添加了功能,修复了错误等等.但他们是否都修复了相同的错误?我倾向于支持ansi-wl-pprint,因为它有文档,并且它的最后一次上传是在2012年,并且有一些版本暗示作者仍在使用它.

但我不确定.有人有什么建议吗?而且我相信其他人同意5个几乎但不完全复制粘贴的模块可以做一些整合......

ehi*_*ird 24

没有特别的顺序:

  • "免费" Text.PrettyPrint.Free意味着免费monad,根据包装说明:"基于Wadler/Leijen漂亮打印机的免费monad"; 它的Doc类型是在另一种类型上进行参数化的,它有一个Monad实例,允许你将"效果"嵌入到Doc值中.wl-pprint-terminfo使用它来添加格式化功能; 它不是竞争包,而是同一作者的扩展库.请参阅添加列表WL-pprint-附加文件相比,WL-pprint的名单上它增加了更多的详细信息.

  • wl-pprint-terminfo使用terminfo包进行格式化,因此它只适用于POSIX-y系统,而ansi-wl-pprint使用ansi-terminal包,因此它可以在Windows上运行.

  • 如果你正在使用WL-pprint文本可能是有用的Text了,但它不太可能有重大的性能影响,除非你使用漂亮的打印真正严重; 这不是一项大规模计算密集型任务.

除非我有特定的要求,否则我可能只是使用漂亮的软件包,因为它是一个启动软件包,因此无处不在.如果我想要格式化,我会选择ansi-wl-pprint,如果我正在使用Text,我会选择wl-pprint-text ,但除此之外,我并没有真正看到使用第三方库的特别令人信服的理由.

  • 我写了'wl-pprint-text`,我发现最终结果是比我以前使用`pretty`的速度快了*.另外,我在`wl-pprint-text`中修复了`wl-pprint` wrt缩进和间距的一些问题. (2认同)
  • 是的,看到"解决了一些问题"让我担心.嗯,当然你修理它们很棒,但你是否已将这些修复程序提交给其他库?(是的,他们四个......) (2认同)