Cho một chữ ký A
với một datatype t
, nóiLàm thế nào để tránh lặp lại dữ liệu SML trong cấu trúc và chữ ký?
signature A = sig
datatype t = T of int | S of string
end
Có thể cung cấp một thực hiện (một cấu trúc) mà không có t
lặp đi lặp lại? Ví dụ, trong chữ ký sau, định nghĩa của t
được lặp lại. Đó là tốt cho các kiểu dữ liệu nhỏ, nhưng một chút vụng về cho những cái lớn hơn.
structure AImpl : A = struct
datatype t = T of int | S of string
end
Ý định của tôi chỉ đơn giản là đưa ra giao diện để người ta có thể biết tất cả các khai báo. Nhưng tôi không muốn mọi thực hiện lặp lại định nghĩa datatype.
Mặc dù có vẻ như chữ ký và cấu trúc có thể bao gồm một kiểu dữ liệu từ một cấu trúc khác, sau đó sẽ không thể biết khai báo kiểu dữ liệu bằng cách kiểm tra chữ ký một mình. Ví dụ:
structure AData = struct
datatype t = T of int | S of string
end
signature A = sig
datatype t = datatype AData.t
end
structure a : A = struct
open AData
end
Dĩ nhiên, phương pháp này, mặc dù không phải là thỏa mãn, có thể chấp nhận nếu tôi đặt cả hai AData
và A
trong cùng một tập tin .sig
.
Điều đó làm cho ý nghĩa. Chữ ký là để thực hiện ẩn. Chỉ nghĩ rằng tôi có thể đặt các chức năng phụ trợ vào cấu trúc khác (lồng nhau) và mở nó ra. – shhyou