【发布时间】:2014-11-27 16:01:31
【问题描述】:
给定签名A,数据类型为t,比如说
signature A = sig
datatype t = T of int | S of string
end
是否可以提供不重复t 的实现(结构)?例如,在下面的签名中,重复了t 的定义。这对于小型数据类型很好,但对于较大的数据类型有点笨拙。
structure AImpl : A = struct
datatype t = T of int | S of string
end
我的意图只是提供一个接口,以便人们可以了解所有的声明。但我不希望每个实现都重复数据类型定义。
虽然签名和结构似乎都可以包含来自另一个结构的数据类型,但是通过单独检查签名将无法知道数据类型声明。例如:
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
当然,如果我将AData 和A 放在同一个.sig 文件中,这种方法虽然不是那么令人满意,但也是可以接受的。
【问题讨论】:
标签: module sml algebraic-data-types