假设我有一个 Stack 定义的开头,如下所示:
signature STACK = sig
type 'a stack
end;
structure Stack :> STACK = struct
type 'a stack = 'a list
end;
显然这不起作用,因为我无法将列表转换为堆栈:
- [5] : int Stack.stack;
stdIn:1.2-1.23 Error: expression doesn't match constraint [tycon mismatch]
expression: int list
constraint: int Stack.stack
in expression:
5 :: nil: int Stack.stack
这意味着如果我创建了 Stack.push 或 Stack.pop 函数,我无法传入 int 列表,因为它需要一个堆栈。
希望我对标准 ML 有更多了解以提出一个真正的问题,我只知道这不起作用,而且我不确定如何处理签名和结构。