哪个Haskell库用于插值字符串
关于处理插值字符串的Hackage,有许多不同的库。一些产品的质量很差,而另一些产品则因其支持的功能数量而异 哪些是值得使用的哪个Haskell库用于插值字符串,haskell,libraries,hackage,Haskell,Libraries,Hackage,关于处理插值字符串的Hackage,有许多不同的库。一些产品的质量很差,而另一些产品则因其支持的功能数量而异 哪些是值得使用的 库的示例(无特定顺序):,我查看了在Hackage上可以找到的所有插值类库 值得使用的插值库: :支持使用合理语法插入任意Haskell代码,但需要Haskell src exts。如果你只是想要一个通用的字符串插值语法,我会用这个 :基于Shakespeare模板系列,具有最小的依赖性;大多数其他插值字符串包依赖于,这是一个相当繁重的包,需要花费大量时间和资源进行编
库的示例(无特定顺序):,我查看了在Hackage上可以找到的所有插值类库 值得使用的插值库:
- :支持使用合理语法插入任意Haskell代码,但需要Haskell src exts。如果你只是想要一个通用的字符串插值语法,我会用这个
- :基于Shakespeare模板系列,具有最小的依赖性;大多数其他插值字符串包依赖于,这是一个相当繁重的包,需要花费大量时间和资源进行编译。如果您使用任何其他莎士比亚模板,我建议使用此模板
然而,它不支持插入任意Haskell代码,尽管它支持的不仅仅是简单的变量扩展;它还提供函数应用程序、运算符等功能。我认为它还使用
,而不是文本
;从源代码看,我不确定它是否可以与字符串
s一起使用,尽管有支持代码建议它可以String
- :支持任意表达式(同样使用haskell src EXT),并具有内置循环功能。如果你想要更多类似于“模板”的特性,而不仅仅是简单的插值,这是值得考虑的,尽管我个人觉得语法相当难看
- :似乎基于插值字符串-perl6;它已经有一年多没有更新了,而且似乎比interpolatedstring-perl6功能更少。除非你真的遵守了<代码> {EXPR} <代码>语法,否则我不会考虑这个。
- :作为预处理器实现,在字符串中赋予
特殊含义;IMO过于重视解决方案,并且使用这种轻量级语法,可能会破坏现有代码{foo}
另一种选择可能是将包与更通用的模板引擎一起使用;它支持
字符串
、文本
和ByteString
,这应该涵盖所有用途。但是,这显然不支持嵌入Haskell代码,您需要单独指定变量,因此它可能只在某些情况下有用。莎士比亚文本没有完整的Haskell表达式支持,但它有很多。例如,您可以应用函数和使用运算符。@MichaelSnoyman:谢谢;我很快会更新我的答案。有一件事我无法从文档中弄清楚:莎士比亚的文本是否支持条件和循环?