Chúng ta có thể sử dụng API GHC hoặc cái gì khác để tải không phải mô-đun nguồn văn bản, nhưng biểu thức AST, tương tự như haskell-src-exts Exp
type? Bằng cách này, chúng tôi có thể tiết kiệm thời gian cho việc tạo và phân tích mã.Tải động của biểu thức cú pháp trừu tượng Haskell
5
A
Trả lời
3
Tôi không nghĩ API GHC hiển thị giao diện AST (có thể sai mặc dù), nhưng mẫu Haskell thực hiện. Nếu bạn xây dựng các biểu thức bằng cách sử dụng cấu trúc Language.Haskell.TH
Exp
, bạn có thể tạo các hàm/khai báo và sử dụng chúng theo cú pháp $(someTHFunction)
.
Thông báo trước khá lớn là TH chỉ chạy ở thời gian biên dịch, vì vậy bạn cần phải tạo trước mọi thứ. Nếu bạn muốn sử dụng TH vào thời gian chạy, tôi nghĩ bạn cần phải in mẫu có chứa AST, sau đó sử dụng API GHC trên chuỗi kết quả.
Ngoài ra tôi có thể tạo mã nguồn mẫu Haskell. Điều này có thể được coi là sự thỏa hiệp giữa việc tạo ra các biểu thức AST và tạo ra nguồn văn bản Haskell. – modular