私はhaskellのソースコードを再フォーマット/再版しようとしています(空白、行改行、インデントスタイルの変更/削除...)。私はhaskellのソースコードを解析してきれいに印刷できるパッケージhaskell-src-extsを見つけました。pretty-print haskellのソースコードとコメント
関数parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))
を使用すると、ソースコードに含まれるコメントも取得できます。今は元の位置にコメント付きのModule/ASTを印刷したいが、それを行う関数を見つけることはできない。私はASTだけをきれいに印刷することができます。私はASTの印刷とコメントを自分で実装しなければならないのでしょうか、そういうライブラリはすでに存在していますか? (もちろん、コメントせず)
Prelude Control.Monad.Reader Language.Haskell.Exts> (liftM prettyPrint) $ (liftM fst) $ (liftM fromParseResult) $ parseFileWithComments defaultParseMode "A.hs"`
プリントモジュールのソースコードを入力し、GHCiので
module A (fn1) where
-- | Haddock-comment
fn1 ::
String ->
String
fn1 _ = "" -- another comment
:
ファイルA.hs:
次の例を考える明確にするために。任意のprettyPrint
-functionを使用して、ソースコードの書式を変更することができます。コメントを含む元のファイルのプリティ印刷版を得るために
do
(ast, comments) <- fromParseResult $ parseFileWithComments defaultParseMode "A.hs"
prettyPrintWithComments ast comments
:
今、私はこのような何かを行うことができるようにしたいです。
非常に役に立ちましたが、正確には私が望んでいたものではありません。私はまだ設定済みのきれいな 'Style'と' PPHsMode'で実際のソースコードを再フォーマットしたいと思っています。 – haja
@haja:なぜあなたはできませんか?これはまだhaskell-src-extの 'Pretty'クラスのインスタンスです... – ivanm
しかし、やはり元のコメントはかなりプリント出力にどのように含まれていますか? ast-include_というコメントをきれいに印刷する関数が見つかりません。 – haja