Haskell:我应该编译正则表达式吗?

ram*_*ion 5 regex haskell

我的冲动是说是的,特别是如果我在多个代码位置使用相同的正则表达式,但本文表明该库将为我缓存编译(我甚至不确定它将如何做):

通常不需要编译正则表达式模式.模式将在第一次使用时进行编译,并且您的Haskell运行时应该为您记住编译的表示.

Chr*_*icz 5

如果重用正则表达式,则值得使用RegexMaker类型类来定义"已编译"的正则表达式.它能够采用其他选项,并能够在您选择的Monad中报告编译失败.

要使用"编译"的形式,你可以使用"匹配"或"matchM" RegexLike它给你相当于=〜==或〜操作符.


小智 5

GHC(截至7.8.4/regex-tdfa-1.2.0)不会记忆与(=~)或匹配的正则表达式(=~~).我看到使用compileexecute大量潜在匹配提高了一个数量级的性能.

  1. compileexecute

  2. (=~)