Я сделал небольшую работу в SML в прошлом, но теперь я начинаю добираться до Более интересные части.
Использование Abstype ... с ... END
Конструкция, я могу сделать вещи, но держать свои детали реализации скрыты. Я также могу создать подпись того, что я хочу сделать, и использовать оператор :>
:> :> :> :> :> :> оператор, чтобы сделать структуру, придерживаясь этой подписи, которая хранит детали реализации.
не подписываются / сооружения просто более общая версия avstypes? Что я могу сделать с хверцами, которые я не могу сделать с подписими / структурами? Почему я когда-либо хочу использовать avstype?
заранее спасибо за помощь!
В качестве примера:
signature SET = sig
type set
val empty: set
val insert: int * set -> set
val member: int * set -> bool
end
structure Set :> SET = struct
type set = int list
val empty = []
fun insert(x, s) = x::s
fun member(x, []) = false
| member(x, h::t) = (x = h) orelse member(x, t)
end
кажется, по крайней мере, так же мощный, как
abstype AbsSet = absset of int list with
val empty = absset([])
fun insert(x, absset(s)) = absset(x::s)
fun member(x, absset([])) = false
| member(x, absset(h::t)) = (x = h) orelse member(x, absset(t))
end