2012-11-20 29 views
13

Tôi có hai .hs tập tin: một chứa loại giảm tốc mới, và các khác sử dụng nóKhông có trong constructor phạm vi dữ liệu

first.hs:

module first() where 
    type S = SetType 
    data SetType = S[Integer] 

second.hs:

module second() where 
    import first 

Khi tôi chạy giây.hs, cả hai mô-đun đầu tiên, thứ hai được tải chỉ phạt Nhưng, khi tôi viết :type S trên nền tảng Haskell, lỗi sau xuất hiện

Not in scope : data constructor 'S' 

Lưu ý: Có một số chức năng trong mỗi module cho chắc chắn, tôi chỉ bỏ qua nó cho vấn đề rõ ràng

Trả lời

17
module first() where 

Giả sử trong thực tế tên mô-đun bắt đầu với một chữ hoa , phải, danh sách xuất trống - () - cho biết mô-đun không xuất bất kỳ thứ gì, vì vậy những thứ được xác định trong First không nằm trong phạm vi Second.

hoàn toàn bỏ qua trong danh sách xuất khẩu sang xuất khẩu tất cả các ràng buộc top-level, hoặc liệt kê các đối tượng xuất khẩu trong danh sách xuất khẩu

module First (S, SetType(..)) where 

(các (..) xuất khẩu cũng các nhà thầu của SetType, mà không có, chỉ có loại sẽ được xuất khẩu).

Và sử dụng như

module Second where 

import First 

foo :: SetType 
foo = S [1 .. 10] 

Bạn cũng có thể thụt cấp cao nhất,

module Second where 

    import First 

    foo :: SetType 
    foo = S [1 .. 10] 

nhưng đó là xấu xí, và người ta có thể nhận được lỗi do miscounting sự thụt vào một cách dễ dàng.

+0

có, nó sao với chữ in hoa (tôi chỉ cần quên để viết nó ở đây như vậy) nơi để viết các dòng nhập khẩu sau đó? – Shimaa

+0

Có, sẽ không được biên dịch theo cách khác. –

+0

nơi để viết dòng nhập Thứ nhất, để các kiểu dữ liệu của nó nằm trong phạm vi của Thứ hai? – Shimaa

2
  • tên Mô-đun bắt đầu với số vốn - Haskell là trường hợp nhạy cảm
  • Đường dây lên mã của bạn ở lề trái - bố trí rất quan trọng trong Haskell.
  • Bit trong ngoặc đơn là danh sách xuất - bỏ qua nếu bạn muốn xuất tất cả các chức năng hoặc đặt mọi thứ bạn muốn xuất trong đó.

First.hs:

module First where 

type S = SetType 
data SetType = S[Integer] 

Second.hs:

module Second where 
import First 
Các vấn đề liên quan