2012-03-18 32 views
37

Vì vậy, từ một cái nhìn tại hackage tôi có thể thấy 5 thư viện in ấn khá:Thư viện in đẹp nào?

  • tốt cũ HughesPJ trong khá
  • wl-pprint-extras
  • wl-pprint-terminfo
  • wl-pprint
  • ansi-wl-pprint
  • wl-pprint văn

Ồ, chờ đã, đó là 6? 6 thư viện in ấn đẹp ... không chờ đợi, chúng tôi sẽ đến một lần nữa.

Dù sao, tất cả đều là Wadler-Leijen ngoại trừ khóa học HughesPJ. Sự hiểu biết của tôi là WL đơn giản và nhanh hơn, vì vậy có lẽ được ưu tiên cho mã mới.

wl-pprint và tính năng bổ sung wl-pprint có vẻ giống nhau ... Tôi không thể biết "thêm" về cái gì sau, hoặc "Tự do" có nghĩa là gì ở đây (mô-đun là Text.PrettyPrint.Free.).

wl-pprint-terminfo và ansi-wl-pprint cả hai dường như là các biến thể với màu thiết bị đầu cuối ANSI và không có gì, và có vẻ tương đương ngoại trừ wl-pprint-terminfo không có bất kỳ tài liệu nào.

Văn bản chữ in hoa, tất nhiên, sử dụng Văn bản. Tôi không biết có bao nhiêu sự khác biệt mà thực sự làm cho tốc độ wrt.

Điều khiến tôi lo lắng về điều này là nhiều người trong số họ có nhiều bản phát hành. Điều này ngụ ý rằng họ đã có các tính năng được thêm vào, lỗi cố định, v.v ... Nhưng tất cả chúng đều có lỗi giống nhau không? Tôi có khuynh hướng ủng hộ ansi-wl-pprint vì nó có tài liệu và lần tải lên cuối cùng của nó là vào năm 2012 và có một loạt các bản phát hành ngụ ý tác giả vẫn hoạt động trên đó.

Nhưng tôi không biết chắc chắn. Bất cứ ai có lời khuyên nào? Và tôi chắc chắn rằng những người khác đồng ý rằng 5 gần như-nhưng-không-khá copy-paste module có thể làm với một số hợp nhất ...

+3

wl-pprint có khả năng lồng/làm mềm linh hoạt hơn HughesPJ. Nó cũng có tài liệu hướng dẫn tốt hơn - có hướng dẫn sử dụng đầy đủ trên trang web cũ của Daan Leijen. Tóm lại, wl-pprint là "tốt hơn" (theo ý kiến ​​của tôi, dĩ nhiên) hơn HughesPJ nhưng HughesPJ là tiêu chuẩn. –

Trả lời

24

Trong mọi thứ tự cụ thể:

  • Các "miễn phí" trong Text.PrettyPrint.Free có nghĩa là free monad, theo mô tả gói: "Một đơn nguyên miễn phí dựa trên máy in đẹp Wadler/Leijen"; loại Doc của nó được tham số trên một loại khác và loại này có phiên bản Monad, cho phép bạn nhúng "hiệu ứng" vào các giá trị Doc. Điều này được sử dụng bởi wl-pprint-terminfo để thêm chức năng định dạng; nó không phải là một gói cạnh tranh, mà là một thư viện mở rộng của cùng một tác giả. Xem danh sách các bổ sung trong số wl-pprint-extras' documentation so với wl-pprint's list để biết thêm thông tin chi tiết về nội dung bổ sung.

  • wl-pprint-terminfo sử dụng gói terminfo để định dạng, vì vậy nó chỉ hoạt động trên hệ thống POSIX-y, trong khi ansi-wl-pprint sử dụng gói ansi-terminal, vì vậy nó sẽ hoạt động trên Windows.

  • Văn bản wl-pprint có thể hữu ích nếu bạn đang làm việc với Text rồi, nhưng không có tác động hiệu suất lớn trừ khi bạn đang sử dụng máy in đẹp thực sự; nó không chính xác là một nhiệm vụ nặng nề tính toán ồ ạt.

Trừ khi tôi có yêu cầu cụ thể, tôi có thể chỉ sử dụng gói đẹp vì nó là một trong các gói khởi động và do đó có sẵn ở mọi nơi. Tôi muốn dùng ansi-wl-pprint nếu tôi muốn định dạng và văn bản wl-pprint nếu tôi đang làm việc với Text, nhưng nếu không thì tôi không thực sự thấy lý do thuyết phục để sử dụng thư viện của bên thứ ba.

+1

Cảm ơn phản hồi, nhưng ... so sánh wl-pprint và wl-ppprint-extras, sự khác biệt duy nhất có vẻ là đối số kiểu trong * -extras. Tôi đoán đó là như quảng cáo. Điều chính là WL formatters có 'nhóm' và softline vv từ đó, nhưng trong HughesPJ bạn phải sử dụng fcat hoặc fsep. Tôi vẫn chưa tìm ra nếu những người có tương đương về quyền lực, nhưng nhóm có vẻ trực quan hơn ... –

+0

Vâng, có vẻ như các hiệu ứng công cụ là bổ sung tài liệu duy nhất, ít nhất. Nếu bạn có lý do để thích giao diện Wadler-Leijen hơn nhưng không cần bất kỳ tính năng bổ sung nào mà các thư viện khác có, tôi sẽ đi với lệnh wl-pprint gốc. Bạn có thể muốn xem [phụ thuộc ngược] (http://packdeps.haskellers.com/reverse) đối với các gói bạn đang cân nhắc nếu bạn muốn thêm dữ liệu để giúp bạn đưa ra quyết định. – ehird

+0

Lời khuyên tốt. ansi-wl-pprint làm tốt nhất ở đây, nếu bạn cần màu sắc. Hoặc nếu bạn * có thể * cần màu, chuyển từ wl-pprint sang bất kỳ phần nào khác sẽ dễ dàng hơn so với HughesPJ. Và sự thiếu vắng Monoid của HughesPJ trong các phiên bản cũ có nghĩa là khó xử nếu hỗ trợ nhiều phiên bản ghc ... đó là một nhược điểm để trở thành một bootlib ... –

Các vấn đề liên quan