Подтвердить что ты не робот

Разбор UnicodeSyntax с haskell-src-exts

У меня есть исходный файл Haskell, который использует синтаксис Unicode:

{-# LANGUAGE UnicodeSyntax #-}
succ' :: Int → Int
succ' = succ

main :: IO ()
main = print $ succ' 1

Это анализирует и отлично работает с GHC. Кроме того, стильный-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

Любая идея, почему первый подход не удается?

4b9b3361

Ответ 1

С беглым взглядом на источник, это не выглядит так: parseModule извлекает языковые прагмы из источника перед разбором (parseFile делает это, вызывая getExtensions). К моменту начала анализа синтаксис юникода уже слишком поздно.