次のような 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 についてもっと知っていればよかったのですが、これが機能しないことはわかっており、署名と構造にアプローチする方法がわかりません。