如何解决“不支持的扩展名:RegularPatterns”错误?

时间:2016-05-14 08:19:18

标签: haskell

Haskell的新功能,但在F#中,可以模式匹配以下内容:

splitStr :: String -> String -> States -> String
splitStr ('\"':xs) acc (SentenceStart | SentenceMiddle) =
  splitStr xs acc Quoting

Atom编辑器告诉我在顶部添加{-# LANGUAGE RegularPatterns #-} pragma以完成上述工作。当我这样做时它告诉我它找不到扩展名。查看known扩展程序列表,最近似乎没有添加RegularPatterns。我正在使用GHC的7.10.3版本。我也尝试过编译,它不会工作,所以Atom编辑器在这里没有错。

任何想法如何使这项工作?

2 个答案:

答案 0 :(得分:3)

据我所知,你有这些选择。

拆分模式。这是最简单和最常见的选择,除非右侧非常大。 (当它很大时,我仍然会考虑为此定义辅助功能。)

splitStr ('\"':xs) acc SentenceStart  = splitStr xs acc Quoting
splitStr ('\"':xs) acc SentenceMiddle = splitStr xs acc Quoting

使用图案防护和where

splitStr ('\"':xs) acc s 
   | SentenceStart  <- s = result 
   | SentenceMiddle <- s = result
   where result = splitStr xs acc Quoting

使用视图模式

startOrMiddle SentenceStart  = True
startOrMiddle SentenceMiddle = True
startOrMiddle _              = False

splitStr ('\"':xs) acc (True <- startOrMiddle) =
   splitStr xs acc Quoting

使用模式同义词和视图模式

-- startOrMiddle as above

pattern StartOrMiddle = (True <- startOrMiddle)

splitStr ('\"':xs) acc StartOrMiddle = splitStr xs acc Quoting

答案 1 :(得分:0)

对于任何想知道的人,RegularPatterns是HaRP预处理器提供的扩展。 https://hackage.haskell.org/package/harp

我认为,项目在2010年左右被遗弃了,但它仍然保持不变。

至于消息本身,它似乎是由hlint使用的haskell-src-exts生成的解析错误。