2010-12-29 47 views
10

Tôi đang phát triển một máy ảo cho các chương trình thuần túy chức năng và tôi muốn có thể kiểm tra và sử dụng nhiều loại mô-đun Haskell đã có sẵn. VM lấy làm đầu vào về cơ bản các thuật ngữ trong phép tính lambda chưa được phân loại. Tôi tự hỏi những gì sẽ là một cách tốt để trích xuất như một đại diện từ các mô-đun Haskell hiện đại (ví dụ: với MPTC, mô hình bảo vệ, vv). Tôi đã làm một ít nghiên cứu và có vẻ như không phải là một công cụ thực hiện điều này (tôi sẽ rất vui khi bị nhầm lẫn), và điều đó không sao. Tôi đang tìm cách tiếp cận.Chiến lược cho desugaring Haskell

GHC Core dường như quá tập trung vào hoạt động, đặc biệt vì một trong những điều mà VM thực hiện là thay đổi thứ tự đánh giá một cách đáng kể. Có bất kỳ biểu diễn trung gian có thể truy cập nào tương ứng chặt chẽ hơn với phép tính lambda không?

+0

Tuyến đường cốt lõi có nghĩa là bạn bị thúc đẩy bởi các phát biểu trường hợp - nhưng bạn có thể biến những người đó trở lại thành các bảng mã nhà thờ và sau đó bạn là 90% con đường ở đó, phải không? – sclv

+0

@sclv, hmm đó là một điểm tốt. – luqui

Trả lời

5

Lõi ngoài cho GHC gần bằng phép tính lambda như bạn sẽ nhận được, sử dụng GHC. Here là một liên kết thẳng đến các loại biểu hiện nếu bạn muốn nhảy ngay.

  • Library để xử lý các file lõi bên ngoài
  • Làm thế nào để generate lõi bên ngoài với GHC
  • Một học paper về việc sử dụng nó
+0

Không chắc chắn nếu tôi sẽ đi với nó, nhưng đây là một câu trả lời tuyệt vời cho việc bắt đầu với Core chế biến, một cái gì đó tôi nghĩ khó khăn trong quá khứ. – luqui

1

Hm ... Đã bao giờ nghe nói về số Haskell Kernel? Tôi không chắc bạn cần gì. Đó là một số loại Haskell giả mạo, và về cơ bản được định nghĩa trong báo cáo Haskell. Tôi không chắc đây có phải là thứ bạn cần hay không.

3

EHC từng có lưu lượng này giữa các đại diện:

HS -> EH -> Cor e -> Grin -> Silly

HS rõ ràng là Haskell, EH ít ngọt và được sử dụng bởi trình kiểm tra loại, Core tương tự với GHC's Core và Grin và Silly thấp hơn mức đó.

Có một bài báo mô tả kiến ​​trúc của EHC bởi Jeroen Fokker, nơi tôi đã nới rộng những điều trên, nhưng có lẽ đã lỗi thời (Tôi không biết rằng EHC vẫn sử dụng biểu diễn Silly). Tôi nghĩ rằng EHC cung cấp các trình phân tích cú pháp và các máy in đẹp cho mỗi đại diện bên trong của nó, điều này rất tiện lợi.

Ngoài ra còn có York. Khác với YHC mà tôi đã thấy mọi người nói thuận lợi hơn GHC Core, nhưng tôi không biết liệu có phương tiện biên dịch Haskell "hiện đại" thành York.Core.

+0

Vâng tôi đã tìm thấy EHC ngay sau khi tôi đặt câu hỏi. Đó không phải là Haskell mặc dù, đó là một số khía cạnh ngữ pháp thuộc tính khốn khổ mà tôi thấy rất khó đọc. Oh well, có thể phải cắn viên đạn, tùy thuộc vào cách xa tôi có thể nhận được với các công cụ Antoine gợi ý ... – luqui

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