2017-06-13 16 views
8

Trong GHCi, có vẻ như là hai cách để bao gồm các module được cài đặt:Trong GHCi, sự khác nhau giữa ': module' và 'import' là gì?

Prelude> :module Database.HDBC 
Prelude Database.HDBC> 

Prelude> import Database.HDBC 
Prelude Database.HDBC> 

Có sự khác biệt giữa các? Nếu không, tại sao các lệnh trùng lặp?

Tôi đã luôn sử dụng import và hiện đang nhận thấy :module được sử dụng trong Real World Haskell's databases chapter.

+1

Tôi nghĩ RWH được viết trước khi ghci hỗ trợ báo cáo nhập. –

Trả lời

9

Từ GHCi docs:

Lệnh :module cung cấp một cách để làm hai việc mà không thể được thực hiện với import tờ khai bình thường:

  • :module hỗ trợ * modifier modul mở rộng, mở ra phạm vi cấp cao nhất đầy đủ của một mô-đun, thay vì chỉ xuất khẩu của nó.
  • Nhập có thể bị xóa khỏi ngữ cảnh, sử dụng cú pháp :module -M. Cú pháp import được tích lũy (như trong mô-đun Haskell), vì vậy đây là cách duy nhất để trừ khỏi phạm vi.
Các vấn đề liên quan