我正在尝试使用标准ML中的functors
进行学习。我写了以下代码,但我一直收到错误Error: unmatched structure specification: Element
。任何人都可以指出错误给我。我一直无法找到它:
signature SET_ELEMENT =
sig
type element
val equal: element -> element -> bool
end
signature SET =
sig
type set
structure Element : SET_ELEMENT
val empty: set
val member: Element.element -> set -> bool
end
functor Set (Element:SET_ELEMENT) :> SET =
struct
type element = Element.element
type set = element list
val empty = [];
fun member x [] = false
| member x (y::ys) = Element.equal x y orelse member x ys;
end
答案 0 :(得分:1)
您在Element
的签名中声明了名为SET
的结构。但是你没有在仿函数输出的结构中定义一个名为Element
的结构。
只需添加一行,声明它与仿函数的Element
输入相同:
functor Set (Element:SET_ELEMENT) :> SET =
struct
structure Element = Element
type element = Element.element
type set = element list
val empty = [];
fun member x [] = false
| member x (y::ys) = Element.equal x y orelse member x ys;
end