11
我有一個使用Unicode語法一個Haskell源文件:解析UnicodeSyntax哈斯克爾-SRC-EXTS
{-# LANGUAGE UnicodeSyntax #-}
succ' :: Int → Int
succ' = succ
main :: IO()
main = print $ succ' 1
這解析並運行良好與GHC。另外,Stylish-haskell和hlint(都基於haskell-src-exts)可以毫無困難地讀取這個文件。然而,當我嘗試使用解析它自己哈斯克爾-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
任何想法爲什麼第一種方法失敗?
粗略地看一下源代碼,它看起來不像'parseModule'從源代碼解析語句(parseFile'通過調用'getExtensions'來完成)。在解析開始的時候,啓用unicode語法已經太晚了。 –
你是對的,謝謝!它看起來像parseFileContents是我的用例適當的功能。如果您將您的評論轉換爲答案,我會將其標記爲正確的答案。 –
完成!我並不完全確定這是原因,但是在更多思考的情況下,它似乎確實如此。 –