Đặc tả Haskell 98 nói rằng điểm vào của chương trình, cụ thể là, hàm main
, nên nằm trong mô-đun được gọi là Chính, theo quy ước. Tuy nhiên, ngay cả khi bạn không viết module Main where
ở đầu tệp bạn viết main
, thì mã nguồn biên dịch và có vẻ hoạt động chính xác khi bạn đang sử dụng GHC.Để viết hay không viết `module Main where` trong Haskell
Câu hỏi đặt ra là:
- sự khác biệt giữa văn bản
module Main where
và không viết nó là gì? - Ứng dụng nào được ưu tiên hơn?
Sự khác biệt là không có tiêu đề mô-đun, chỉ 'main' được xuất, nhưng với' module Main where', mọi định nghĩa cấp cao nhất đều được xuất. Dường như mắt của bạn đã thấy 'module Main (main) trong đó' không có danh sách xuất khẩu;) –
Điều quan trọng là phải có danh sách xuất khẩu' (chính) ', bởi vì điều đó cho phép trình biên dịch tối ưu hóa nhiều hơn. – augustss
@DanielFischer @augustss Tôi không thể tìm thấy bất kỳ tài liệu nào để hỗ trợ điều đó. GHC dường như không tạo ra sự khác biệt khi xây dựng một tệp thực thi; nó dường như làm cùng một tối ưu hóa và liên kết cho 'module Main (main) trong đó' như 'module Main where' là tốt. – jdeseno