Código-fonte haskell de impressão bonita com comentários
Estou tentando reformatar / reimprimir o código-fonte haskell (remover / adicionar espaços em branco, quebras de linha, alterar o estilo de indentação ...). Encontrei o pacote haskell-src-exts que pode analisar e imprimir o código-fonte haskel
Usando a funçãoparseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))
Eu também recebo os comentários incluídos no código fonte. Agora, quero imprimir o Módulo / AST com os comentários nas posições originais, mas não consigo encontrar uma função que faça isso. Só posso imprimir o AST de maneira bonita. Preciso implementar a impressão do AST mais os comentários pessoalmente ou uma biblioteca desse tipo já existe?
Para esclarecer, considere o seguinte exemplo:
file A.hs:
module A (fn1) where
-- | Haddock-comment
fn1 ::
String ->
String
fn1 _ = "" -- another comment
Em ghci, digitando
Prelude Control.Monad.Reader Language.Haskell.Exts> (liftM prettyPrint) $ (liftM fst) $ (liftM fromParseResult) $ parseFileWithComments defaultParseMode "A.hs"`
imprime o código fonte do módulo (sem os comentários, é claro). Eu posso usar qualquerprettyPrint
função para modificar a formatação do código font
Agora eu quero poder fazer algo assim:
do
(ast, comments) <- fromParseResult $ parseFileWithComments defaultParseMode "A.hs"
prettyPrintWithComments ast comments
para obter uma versão impressa do arquivo original, incluindo os comentário