2012-01-09 33 views
10

Gần đây tôi đã xem qua ghcjs trình biên dịch haskell-to-javascript, nhưng tôi không chắc chắn cách "sẵn sàng". Dường như có ít hoạt động trong năm qua.Haskell cho trình biên dịch Javascript?

Có tương đương với GWT trong Haskell không?

Ngoài ra, thêm một câu hỏi thảo luận: bạn có nghĩ rằng sẽ có tương đương gwt haskell không? Tại sao hay tại sao không?

+1

Tôi chỉ gặp vấn đề này khi tìm kiếm ghcj. Có một repo mới hơn: https://github.com/ghcjs/ghcjs – Nathan

Trả lời

6

Ji dường như có liên quan, mặc dù nó không thực hiện bất kỳ trình biên dịch Haskell-to-JS nào; nó cho phép một máy chủ Haskell kiểm soát một trình duyệt được kết nối với nó thông qua AJAX.

Có vẻ như UHC hỗ trợ compiling to JavaScript và có một số libraries along those lines, nhưng tôi không biết tính tương thích của UHC với tiện ích mở rộng GHC là như thế nào hoặc mức độ hỗ trợ của người lớn.

Tôi không thuyết phục biên dịch đầy đủ Haskell thành JavaScript là một tuyến sản xuất; chi phí thực hiện việc đánh giá lười biếng trên ngôn ngữ cấp cao có thể là đáng kể và tất cả các attempts so far (tôi chưa kiểm tra mã được tạo của UHC) dường như tạo ra JavaScript khá lớn (phải thừa nhận rằng, giảm nhẹ nén HTTP điều này).

Tôi không nghĩ rằng ghcj đang được tích cực phát triển, nhưng nó có thể ổn định hơn hỗ trợ của UHC. Sự hỗ trợ của Yhc dường như là xa nhất cho đến nay, nhưng tiếc là Yhc là một dự án đã chết.

+0

Wow, đó là tuyệt vời! Ji, có nghĩa là. Nó sẽ vô cùng độc ác nếu có một động cơ templating trong đó, và một số loại định tuyến url. Làm thế nào trên thế giới hiện nó "kiểm soát" trình duyệt? Tôi nghĩ cách duy nhất là thông qua AJAX! – drozzy

+0

@drozzy: Qua AJAX, như tôi đã nói :) – ehird

+0

Ồ, tôi vừa thấy tệp js nhỏ ẩn trong đó! Haha, thông minh. – drozzy

8

Có một số trình biên dịch như vậy có thể được sử dụng ngay lập tức.

  • Fay (trước đây tại http://fay-lang.org/, bây giờ https://github.com/faylang/fay) phổ biến nhất và Haskell phát triển nhất -> JS biên dịch. AFAIU, nó thực hiện Haskell từ đầu và biên dịch nó thành JavaScript. Nó không thực hiện nhiều tính năng của GHC, đặc biệt là các phần mở rộng ngôn ngữ.
  • Haste (https://github.com/valderman/haste-compiler) Nó sử dụng phụ trợ của GHC để biên dịch sang javascript. Kết quả là bạn có thể sử dụng nó để biên dịch phần mở rộng có chứa mã.
+0

Tôi đã thực hiện [so sánh rất ngắn gọn cả hai] (https://www.joachim-breitner.de/blog/archives/602-Running-Circle-Packing-in-the-Browser-using-Haste.html). –

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