这个错误是什么? - 在建筑阶段失败

时间:2015-04-10 14:51:08

标签: regex haskell scope ghc

构建时出现此错误:

dist/package.conf.inplace:
inappropriate type

FAILED DURING THE BUILDING PHASE. The **exception** was: ExitFailure 1

如何在包中使用subRegex Text.Regex?

我写道:

import Text.Regex.Posix

但我收到了这个错误:

_.hs:13:5: Not in scope: ‘subRegex’

_.hs:13:15:
    Not in scope: ‘mkRegex’
    Perhaps you meant ‘makeRegex’ (imported from Text.Regex.Posix)

所以,我去了Text.Regex [页码] [1],然后说:

  

使用Text.Regex.Posix中的POSIX正则表达式接口。

那么为什么这些功能不在范围内呢?

2 个答案:

答案 0 :(得分:9)

以下是您可以执行的一些步骤。

  1. http://hackage.haskell.org/package/regex-compat-0.92下载,解压缩为< Haskell平台安装文件夹> \ 2014.2.0.0 \ lib \
  2. 运行Haskell。
  3. 键入:mod +Text.Regex以加载包。
  4. 类型,例如subRegex (mkRegex "[0-9]+") "foobar567" "123"
  5. 结果为"foobar123"(加载所有包后)。
  6. 以下是subRegex description

      

    :: Regex Search pattern   
    -> String Input string   
    -> String Replacement text   
    -> String Output string

         

    用替换替换给定正则表达式的每个出现   字符串。

         

    在替换字符串中,“\ 1”表示第一个子字符串; “\ 2”来   第二个等;和整个比赛的“\ 0”。 “\\”将插入一个   文字反斜杠。

         

    如果正则表达式匹配空字符串,则不会提前。这个   错误在这里是为了匹配原始的行为   Text.Regex API。

    一些很酷的链接可以帮助您深入研究:
    http://www.serpentine.com/blog/2007/02/27/a-haskell-regular-expression-tutorial/
    https://wiki.haskell.org/Cookbook/Pattern_matching

    我在Windows中使用它,这是我的屏幕:

    enter image description here

答案 1 :(得分:5)

您不应该导入Text.Regex.Posix,而是 Text.Regex ,因为您想要的两个功能都在那里。

看看the Hackage page - 你几乎就在那里,但实际上在那个文件中的功能。