我有一个使用 Unicode 语法的 Haskell 源文件:
{-# LANGUAGE UnicodeSyntax #-}
succ' :: Int → Int
succ' = succ
main :: IO ()
main = print $ succ' 1
这可以使用 GHC 解析并运行良好。此外,style-haskell 和 hlint(均基于 haskell-src-exts)可以毫无问题地读取此文件。但是,当我尝试使用 haskell-src-exts 自己解析它时:
import Language.Haskell.Exts (parseModule)
main = do
x <- readFile "test.hs"
print $ parseModule x
我收到错误消息:
ParseFailed (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 6, srcColumn = 1}) "TypeOperators is not enabled"
但是,在扩展列表中显式提供 UnicodeSyntax 或使用 parseFile 就可以了:
import Language.Haskell.Exts
main = do
x <- readFile "test.hs"
print $ parseModuleWithMode defaultParseMode
{ extensions = [UnicodeSyntax]
} x
parseFile "test.hs" >>= print
知道为什么第一种方法会失败吗?