Я пытаюсь переформатировать / перепечатать исходный код haskell (удалить / добавить пробелы, разрывы строк, изменить стиль отступов ...).Я нашел пакет haskell-src-exts , который может анализировать и печатать исходный код haskell.
Используя функцию parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))
, я также получаю комментарии, включенные в исходный код,Теперь я хочу напечатать модуль / AST с комментариями в исходных позициях, но я не могу найти функцию, которая будет делать это.Я могу только красиво напечатать АСТ.Нужно ли самому печатать AST плюс комментарии или такая библиотека уже существует?
Для пояснения рассмотрим следующий пример:
file 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
, чтобы получить печатную версиюисходного файла, включая комментарии.