Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个Haskell库用于插值字符串_Haskell_Libraries_Hackage - Fatal编程技术网

哪个Haskell库用于插值字符串

哪个Haskell库用于插值字符串,haskell,libraries,hackage,Haskell,Libraries,Hackage,关于处理插值字符串的Hackage,有许多不同的库。一些产品的质量很差,而另一些产品则因其支持的功能数量而异 哪些是值得使用的 库的示例(无特定顺序):,我查看了在Hackage上可以找到的所有插值类库 值得使用的插值库: :支持使用合理语法插入任意Haskell代码,但需要Haskell src exts。如果你只是想要一个通用的字符串插值语法,我会用这个 :基于Shakespeare模板系列,具有最小的依赖性;大多数其他插值字符串包依赖于,这是一个相当繁重的包,需要花费大量时间和资源进行编

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

哪些是值得使用的


库的示例(无特定顺序):,

我查看了在Hackage上可以找到的所有插值类库

值得使用的插值库:

  • :支持使用合理语法插入任意Haskell代码,但需要Haskell src exts。如果你只是想要一个通用的字符串插值语法,我会用这个

  • :基于Shakespeare模板系列,具有最小的依赖性;大多数其他插值字符串包依赖于,这是一个相当繁重的包,需要花费大量时间和资源进行编译。如果您使用任何其他莎士比亚模板,我建议使用此模板

    然而,它不支持插入任意Haskell代码,尽管它支持的不仅仅是简单的变量扩展;它还提供函数应用程序、运算符等功能。我认为它还使用
    文本
    ,而不是
    字符串
    ;从源代码看,我不确定它是否可以与
    String
    s一起使用,尽管有支持代码建议它可以

  • :支持任意表达式(同样使用haskell src EXT),并具有内置循环功能。如果你想要更多类似于“模板”的特性,而不仅仅是简单的插值,这是值得考虑的,尽管我个人觉得语法相当难看

插值库可能不值得使用:

  • :似乎基于插值字符串-perl6;它已经有一年多没有更新了,而且似乎比interpolatedstring-perl6功能更少。除非你真的遵守了<代码> {EXPR} <代码>语法,否则我不会考虑这个。

  • :作为预处理器实现,在字符串中赋予
    {foo}
    特殊含义;IMO过于重视解决方案,并且使用这种轻量级语法,可能会破坏现有代码

总之,如果您不介意haskell src exts依赖项,我建议使用interpolatedstring-perl6,如果您介意(或者已经在使用莎士比亚模板),则建议使用莎士比亚文本


另一种选择可能是将包与更通用的模板引擎一起使用;它支持
字符串
文本
ByteString
,这应该涵盖所有用途。但是,这显然不支持嵌入Haskell代码,您需要单独指定变量,因此它可能只在某些情况下有用。

莎士比亚文本没有完整的Haskell表达式支持,但它有很多。例如,您可以应用函数和使用运算符。@MichaelSnoyman:谢谢;我很快会更新我的答案。有一件事我无法从文档中弄清楚:莎士比亚的文本是否支持条件和循环?