Довольно печатный исходный код haskell с комментариями

Я пытаюсь переформатировать / перепечатать исходный код haskell (удалить / добавить пробелы, переносы строк, изменить стиль отступа ... ). Я нашел пакет haskell-src-exts , который может анализировать и распечатывать исходный код haskell.

Используя функцию parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment])) Я также получаю комментарии, включенные в исходный код. Теперь я хочу напечатать модуль / AST с комментариями на исходных позициях, но я не могу найти функцию, которая бы это сделала. Я могу только красиво распечатать AST. Должен ли я сам реализовать печать AST и комментариев, или такая библиотека уже существует?

Для пояснения рассмотрим следующий пример:

файл A.hs:

module A (fn1) where

-- | Haddock-comment
fn1 ::
    String ->
    String
fn1 _ = "" -- another comment

В ghci при вводе

Prelude Control.Monad.Reader Language.Haskell.Exts> (liftM prettyPrint) $ (liftM fst) $ (liftM fromParseResult) $ parseFileWithComments defaultParseMode "A.hs"`

печатается исходный код модуля (разумеется, без комментариев). Я могу использовать любую prettyPrint -функцию для изменения форматирования исходного кода.

Теперь я хочу иметь возможность сделать что-то вроде этого:

do
    (ast, comments) <- fromParseResult $ parseFileWithComments defaultParseMode "A.hs"
    prettyPrintWithComments ast comments

, чтобы получить красиво распечатанную версию исходного файла, включая комментарии.

8
задан haja 23 February 2012 в 07:48
поделиться