2010-10-05 34 views
11

Tôi muốn kiểm tra việc triển khai tối ưu hóa trình biên dịch bằng cách đưa vào quá trình biên dịch GHC và thay đổi biểu diễn Core của nó. Ý tưởng sẽ có một cái gì đó như:Có thể sử dụng API GHC để sửa đổi chương trình trong khi biên dịch chương trình không?

runGhc (Just libdir) $ do 
    ... 
    c <- compileToCoreModule targetFile 
    compileCoreToObj False (modify c) 
    ... 

trong đó modify lấy biểu diễn lõi và trả về phiên bản đã sửa đổi. mã này, tuy nhiên, thất bại (ngay cả khi modify làm gì cả) với thông điệp không phải là rất hữu ích:

expectJust mkStubPaths 

Bất kỳ ý tưởng về làm thế nào để làm cho công việc này, hoặc nếu nó thậm chí còn có thể thực hiện một chuyển đổi code theo cách này ?

Trả lời

9

Điều đó nghe như một lỗi trong số compileCoreToObj đối với tôi. Vui lòng report it.

+0

Tôi đã do dự khi báo cáo vì tôi không chắc liệu tôi có đang sử dụng các chức năng chính xác không. Có bất kỳ ví dụ nào về các loại biến đổi này không? – matiash

+0

Tôi không biết bất kỳ ví dụ cụ thể nào, không. –

+0

Có bất kỳ tiến triển nào với vấn đề này không? Tôi đã thử ngày hôm nay chính xác cùng một mã và nó dẫn đến thông báo lỗi tương tự. –

6

GHC có hỗ trợ cho plugins bây giờ, có vẻ như thực hiện chính xác những gì bạn muốn.

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