Tôi đang cố gắng định dạng lại/in lại mã nguồn haskell (loại bỏ/thêm khoảng trắng, ngắt dòng, thay đổi phong cách sở hữu ...). Tôi đã tìm thấy gói haskell-src-exts có thể phân tích cú pháp và in mã nguồn haskell đẹp mắt.Mã nguồn haskell khá có ý kiến
Sử dụng hàm parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))
Tôi cũng nhận được các nhận xét được bao gồm trong mã nguồn. Bây giờ tôi muốn in các Module/AST với các ý kiến ở các vị trí ban đầu, nhưng tôi không thể tìm thấy một chức năng mà sẽ làm điều đó. Tôi chỉ có thể in ấn AST. Tôi có phải thực hiện in ấn của AST cộng với ý kiến bản thân mình hoặc làm như một thư viện đã tồn tại?
Để làm rõ xem xét ví dụ sau:
tập tin A.hs:
module A (fn1) where
-- | Haddock-comment
fn1 ::
String ->
String
fn1 _ = "" -- another comment
Trong ghci, gõ
Prelude Control.Monad.Reader Language.Haskell.Exts> (liftM prettyPrint) $ (liftM fst) $ (liftM fromParseResult) $ parseFileWithComments defaultParseMode "A.hs"`
in mã nguồn mô-đun (không có ý kiến, tất nhiên) . Tôi có thể sử dụng bất kỳ prettyPrint
-function nào để sửa đổi định dạng mã nguồn.
Bây giờ tôi muốn để có thể làm điều gì đó như thế này:
do
(ast, comments) <- fromParseResult $ parseFileWithComments defaultParseMode "A.hs"
prettyPrintWithComments ast comments
để có được một phiên bản khá-in của tập tin gốc trong đó có ý kiến.
Điều đó khá hữu ích, nhưng không chính xác những gì tôi muốn. Tôi vẫn muốn có thể định dạng lại mã nguồn thực tế bằng một 'Style' và' PPHsMode' được định cấu hình khá đẹp. – haja
@haja: tại sao bạn không thể? Nó vẫn là một thể hiện của lớp 'Pretty' của haskell-src-ext ... – ivanm
nhưng sau đó một lần nữa, các chú thích gốc có thể được đưa vào đầu ra đẹp như thế nào? Tôi không thể tìm thấy một chức năng mà in đẹp các bình luận _including_. – haja