Да предположим, че имам началото на дефиницията за стек като следното:
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 списъка, защото ще очаква стек.
Иска ми се да знам повече за Standard ML, за да формулирам истински въпрос, просто знам, че това не работи и не съм сигурен как да подходя към подписите и структурите.