tôi đã xem xét tất cả các suy quasiquoter thư viện tôi có thể tìm thấy trên Hackage.
thư viện nội suy giá trị sử dụng:
interpolatedstring-perl6: Hỗ trợ nội suy mã Haskell tùy ý với cú pháp hợp lý, nhưng đòi hỏi Haskell-src-EXTS. Nếu bạn chỉ muốn một cú pháp nội suy chuỗi chung, tôi sẽ sử dụng nó.
shakespeare-text: Dựa trên họ mẫu Shakespeare, và có phụ thuộc tối thiểu; hầu hết các gói chuỗi nội suy khác phụ thuộc vào haskell-src-exts, đây là gói khá nặng và có thể tốn nhiều thời gian và tài nguyên để biên dịch. Nếu bạn sử dụng bất kỳ mẫu Shakespeare nào khác, tôi khuyên bạn nên sử dụng mẫu này.
Tuy nhiên, nó không hỗ trợ nội suy mã Haskell tùy ý, mặc dù nó hỗ trợ nhiều hơn mở rộng biến đơn giản; nó cũng có chức năng ứng dụng, điều hành, vv Tôi nghĩ rằng nó cũng sử dụng Text
thay vì String
; Tôi không chắc chắn liệu nó có thể được sử dụng với String
s tìm kiếm từ mã nguồn, mặc dù có mã hỗ trợ để đề xuất nó có thể được.
Interpolation: Hỗ trợ các biểu thức tùy ý (lại với haskell-src-exts) và cũng có các cơ sở lặp được tích hợp sẵn. Nếu bạn muốn nhiều hơn "mẫu" giống như các tính năng hơn chỉ là nội suy đơn giản, nó đáng xem xét, mặc dù cá nhân tôi tìm thấy cú pháp khá xấu xí.
thư viện Interpolation lẽ không giá trị sử dụng:
interpolatedstring-qq: Có vẻ được dựa trên interpolatedstring-Perl6; nó đã không được cập nhật trong hơn một năm, và dường như có ít chức năng hơn interpolatedstring-perl6. Trừ khi bạn thực sự gắn liền với cú pháp #{expr}
, tôi sẽ không xem xét cú pháp này.
interpol: Được thực hiện dưới dạng bộ tiền xử lý, cung cấp {foo}
ý nghĩa đặc biệt trong chuỗi; IMO quá nặng một giải pháp, và với cú pháp nhẹ như vậy, có khả năng phá vỡ mã hiện có.
Nói tóm lại, tôi muốn đề nghị interpolatedstring-Perl6 nếu bạn không nhớ phụ thuộc Haskell-src-EXTS, và shakespeare-văn bản nếu bạn làm (hoặc đang sử dụng Shakespeare mẫu).
Tùy chọn khác có thể là sử dụng gói string-qq với công cụ tạo mẫu chung hơn; nó hỗ trợ String
, Text
và ByteString
, nên bao gồm mọi lần sử dụng.Tuy nhiên, điều này rõ ràng không hỗ trợ nhúng mã Haskell, và bạn sẽ cần phải chỉ định các biến riêng biệt, vì vậy nó có thể chỉ hữu ích trong các tình huống nhất định.
shakespeare-text không có hỗ trợ biểu thức Haskell đầy đủ, nhưng nó có rất nhiều. Bạn có thể áp dụng các hàm và các toán tử sử dụng, ví dụ. –
@MichaelSnoyman: Cảm ơn; Tôi sẽ sớm cập nhật câu trả lời của tôi. Một điều tôi đã không thể tìm ra từ các tài liệu: không shakespeare-văn bản hỗ trợ điều kiện và vòng? – ehird