gpt4 book ai didi

haskell - 用于插值字符串的 Haskell 库

转载 作者:行者123 更新时间:2023-12-04 13:53:36 24 4
gpt4 key购买 nike

Hackage 上有许多不同的库处理插值字符串。有些质量很差,而另一些则因它们支持的功能数量而异。

哪些值得使用?

库示例(排名不分先后):shakespeare , interpolatedstring-qq , Interpolation

最佳答案

我查看了在 Hackage 上可以找到的所有插值准引用库。

值得使用的插值库:

  • interpolatedstring-perl6 : 支持用合理的语法插入任意 Haskell 代码,但需要 haskell-src-exts。如果您只想要一个通用的字符串插值语法,我会使用它。
  • shakespeare-text :基于莎士比亚家族的模板,并且具有最小的依赖关系;大多数其他内插字符串包依赖于 haskell-src-exts ,这是一个相当重的包,可能需要大量的时间和资源来编译。如果您使用任何其他莎士比亚模板,我建议您使用这个。

    但是,它不支持插入任意 Haskell 代码,尽管它支持的不仅仅是简单的变量扩展;它也有函数应用程序、运算符等。我认为它也使用 Text而不是 String ;我不确定它是否可以与 String 一起使用从源代码看,虽然有支持代码建议它可以。
  • Interpolation :支持任意表达式(同样使用haskell-src-exts),并且还具有内置的循环功能。如果您想要更多类似"template"的功能而不仅仅是简单的插值,那么值得考虑,尽管我个人觉得语法很丑。

  • 插值库可能不值得使用:
  • interpolatedstring-qq : 好像是基于 interpolatedstring-perl6 的;它已经有一年多没有更新了,而且功能似乎比 interpolatedstring-perl6 少。除非你真的很喜欢 #{expr}语法,我不会考虑这个。
  • interpol : 作为预处理器实现,给出 {foo}字符串中的特殊含义; IMO 过于重量级的解决方案,并且使用如此轻量级的语法,可能会破坏现有代码。

  • 总之,如果您不介意 haskell-src-exts 依赖项,我建议您使用 interpolatedstring-perl6,如果您介意(或者已经在使用 Shakespeare 模板),我建议您使用 Shakespeare-text。

    另一种选择可能是使用 string-qq使用更通用的模板引擎打包;支持 String , TextByteString ,它应该涵盖所有用途。但是,这显然不支持嵌入 Haskell 代码,并且您需要单独指定变量,因此它可能仅在某些情况下有用。

    关于haskell - 用于插值字符串的 Haskell 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956801/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com