Я пытаюсь использовать абстрактные типы данных в стандартном ML. Например, я мог бы написать очереди подписи, и две очереди реализаций пути определения двух структур в очередях:ML abstract data type
signature Queue = ...
structure AQueue :> Queue = ...
structure BQueue :> Queue = ...
Теперь я хотел бы написать общие функции/значение для очередей, что это не имеет значения, какая очередь Я использую (AQueue или BQueue). Например, я хотел бы написать следующее:
val double1 = Queue.enqueue (1, Queue.enqueue (1, Queue.empty))
Я думаю, что я должен упомянуть тип Queue.queue (assumming он назван так в очереди подписи) где-то ... Я должен открыть очереди? Это можно сделать? Похоже, что это должна быть обычная ситуация с ADT, но я не знаю, где читать ... все, что я нашел, - это как определить сигнатуры/структуры, но не как их использовать.