AFAIK GHC là trình biên dịch phổ biến nhất hiện nay, nhưng tôi cũng thấy, một số ompilers khác cũng có sẵn. GHC có thực sự là lựa chọn tốt nhất cho mọi mục đích hay không? Ví dụ, tôi đọc rằng một số trình biên dịch (quên tên) làm tốt hơn về tối ưu hóa, nhưng không thực hiện tất cả các phần mở rộng.Trình biên dịch cho Haskell
Trả lời
GHC là trình biên dịch Haskell được sử dụng rộng rãi nhất và cung cấp nhiều tính năng nhất. Tuy nhiên, có những lựa chọn khác, đôi khi có một số lợi ích so với GHC. Đây là một số giải pháp thay thế phổ biến hơn:
Hugs - Hugs là một thông dịch viên (Tôi không nghĩ nó bao gồm trình biên dịch) nhanh và hiệu quả. Nó cũng được biết đến với việc tạo ra các thông báo lỗi dễ hiểu hơn GHC.
JHC - Trình biên dịch toàn bộ chương trình. JHC có thể tạo ra mã rất hiệu quả, nhưng nó chưa hoàn chỉnh tính năng (đây có lẽ là những gì bạn đang nghĩ đến). Lưu ý rằng nó không phải luôn luôn nhanh hơn GHC, đôi khi chỉ. Tôi đã không sử dụng JHC nhiều bởi vì nó không thực hiện các lớp kiểu đa tham số, mà tôi sử dụng rất nhiều. Tôi đã nghe nói rằng mã nguồn là cực kỳ rõ ràng và dễ đọc, làm cho một trình biên dịch tốt để hack trên. JHC cũng thuận tiện hơn cho việc biên dịch chéo và thường tạo ra các tệp nhị phân nhỏ hơn.
UHC - Trình biên dịch Utrecht Haskell gần hoàn thành tính năng (tôi nghĩ điều duy nhất còn thiếu là mẫu n + k) cho Haskell98. Nó thực hiện nhiều phần mở rộng phổ biến nhất của GHC và một số phần mở rộng ban đầu. Theo mã tài liệu không nhất thiết phải được tối ưu hóa tốt. Đây cũng là một trình biên dịch tốt để hack.
Tóm lại, nếu bạn muốn có mã hiệu quả và các tính năng tiên tiến, GHC là cách tốt nhất của bạn. JHC là giá trị cố gắng nếu bạn không cần MPTC hoặc một số tính năng khác. Các phần mở rộng của UHC có thể hấp dẫn trong một số trường hợp, nhưng tôi sẽ không dựa vào nó cho mã nhanh.
ghc là trình biên dịch rắn. nói rằng đó là lựa chọn tốt nhất cho mọi mục đích là một mục tiêu rất mạnh mẽ. và tìm kiếm một công cụ như vậy là vô ích.
Sử dụng nó và nếu bạn thực sự yêu cầu thứ gì đó khác thì vào thời điểm đó bạn có thể sẽ biết nó là gì.
Tôi nghĩ điều này cũng đáng được đề cập đến nhc98. Từ lời giới thiệu trên trang chủ:
nhc98 là một nhỏ, dễ cài đặt, tiêu chuẩn phù hợp trình biên dịch cho Haskell 98, lười biếng chức năng ngôn ngữ lập trình. Nó là rất di động và nhằm mục đích tạo ra các tệp thực thi nhỏ chạy với số lượng nhỏ bộ nhớ. Nó tạo ra mã số trung bình nhanh chóng và việc biên dịch tự nó là khá nhanh chóng . Nó cũng đi kèm với hỗ trợ công cụ mở rộng để tự động biên dịch , ngoại ngữ interfacing, heap và hồ sơ thời gian, theo dõi và gỡ lỗi.
- Haskell được định nghĩa không chính thức là ngôn ngữ được xử lý bởi GHC.
- GHC là trình biên dịch của nền tảng Haskell.
- Cố gắng tối ưu hóa mã của bạn với GHC có thể trả tiền nhiều hơn chuyển sang trình biên dịch khác vì bạn sẽ học một số kỹ năng tối ưu hóa.
- Có rất nhiều rất tiện ích mở rộng hữu ích trong GHC. Tôi chỉ không thể thấy cách sống mà không có họ.
Vì vậy, đối với bất kỳ điều gì nghiêm trọng (ví dụ như phi học thuật, phi thực nghiệm, không bay hơi hoặc sử dụng nhiều gói), lựa chọn thực dụng là đi cùng với GHC.
Rất thú vị và hữu ích! Cảm ơn bạn! – fuz
Tính đến năm 2011, không có lựa chọn nào khác ngoài GHC cho lập trình hàng ngày. Nhóm HP khuyến khích mạnh mẽ việc sử dụng GHC của tất cả các lập trình viên của Haskell.
Nếu bạn là một nhà nghiên cứu, bạn có thể sử dụng UHC, nếu bạn đang ở trên một hệ thống rất lạ, bạn có thể chỉ có Hugs hoặc nhc98. Nếu bạn là một retro-fan như tôi, bạn vẫn có gofer, HBC và HBI cài đặt:
$ hbi
Welcome to interactive Haskell98 version 0.9999.5c Pentium 2004 Jun 29!
Loading prelude... 1 values, 4 libraries, 200 types found.
Type "help;" to get help.
> help;
HBI -- Interactive Haskell B 1.3
HBI là mát mẻ bởi vì a) nó thực hiện Haskell B, và b) nó hỗ trợ đầy đủ các ngôn ngữ ở lệnh line:
> data L a = I | X a (L a) deriving Show;
data L b = I | X b (L b) deriving (Show)
> X 4 (X 3 I);
X 4 (X 3 I)
và trình biên dịch tạo mã khá tốt, thậm chí 15 năm sau đó.
- 1. Haskell cho trình biên dịch Javascript?
- 2. Trình biên dịch Haskell nhỏ, tốt cho Linux?
- 3. Trình biên dịch/trình biên dịch/trình biên dịch C++
- 4. Lỗi biên dịch Haskell Parsec
- 5. Haskell hoặc Ocaml với OpenGL và SDL biên dịch sẵn biên dịch cho Windows
- 6. Control.Parallel biên dịch vấn đề trong Haskell
- 7. Haskell - Vấn đề biên dịch trong GHC
- 8. Haskell bậc hai polymorphism biên dịch lỗi
- 9. Trình biên dịch biên dịch trong C#
- 10. Tại sao mã Haskell này biên dịch?
- 11. Trình biên dịch C++ tốt cho GCC
- 12. Trình biên dịch C dành cho Windows?
- 13. Trình biên dịch chéo Delphi cho linux
- 14. Trình biên dịch Ada cho Linux
- 15. Trình biên dịch dòng lệnh cho XTend
- 16. Lỗi trình biên dịch cho Nullable Bool
- 17. Thử nghiệm đơn vị cho đầu ra trình biên dịch
- 18. Phát triển iPhone - Trình biên dịch của Trình biên dịch!
- 19. Trình biên dịch có trình biên dịch không?
- 20. Trình biên dịch/trình biên dịch BCPL cho hệ điều hành và kiến trúc hiện tại?
- 21. Trình biên dịch Prolog/Trình biên dịch được nhúng cho Java
- 22. Có trình biên dịch là dịch vụ cho C++ không?
- 23. Quá trình biên dịch
- 24. Mã Haskell trong thế giới thực không biên dịch?
- 25. Viết trình biên dịch; VM nào?
- 26. Ví dụ trình biên dịch
- 27. Biên dịch nhiều tệp .hs của Haskell - Unix
- 28. biên dịch chương trình java
- 29. Lỗi trình biên dịch ArrayList
- 30. Biên dịch C++ cho JVM
http://www.haskell.org/haskellwiki/Thực hiện là những gì bạn đang tìm kiếm. –