У меня есть очень большая подпись с двумя абстрактными типами:Учитывая подпись с двумя абстрактными типами, определяют подсигнатуру, что делает их равными
signature GENERAL_FOO_BAR =
sig
type foo
type bar
(* lots of stuff here *)
end
Я хочу объявить подсигнатуры GENERAL_FOO_BAR
, где два абстрактных типов идентифицируются, но ни одна из следующих попыток не работает:
signature SPECIAL_FOO_BAR = GENERAL_FOO_BAR
where type foo = bar
signature SPECIAL_FOO_BAR = GENERAL_FOO_BAR
sharing type foo = bar
было бы очень громоздким использовать фиктивный тип следующим образом:
signature SPECIAL_FOO_BAR =
sig
type both
include GENERAL_FOO_BAR
where type foo = both
where type bar = both
end
Поскольку это заставляет любого, кто хочет реализовать SPECIAL_FOO_BAR
, ну, определите тип фиктивного типа. Есть ли лучшая альтернатива?
Мой 'F' очень * очень большой. Я бы не хотел его дублировать. На самом деле, мне даже не нравится «включать», но здесь это сэкономит много места. – pyon