Учитывая подпись A
с типом данных t
, скажемКак избежать повторения данных типа SML в структурах и подписях?
signature A = sig
datatype t = T of int | S of string
end
Можно ли обеспечить реализацию (структуру), которая не имеет повторен t
? Например, в следующей подписи повторяется определение t
. Это нормально для небольших типов данных, но немного неуклюжими для более крупных.
structure AImpl : A = struct
datatype t = T of int | S of string
end
Мое намерение - просто дать интерфейс, чтобы можно было узнать все объявления. Но я не хочу, чтобы каждая реализация повторяла определение типа данных.
Хотя кажется, что подпись и структура могут включать в себя тип данных из другой структуры, тогда было бы невозможно узнать объявление типа данных, проверив только подпись. Например:
structure AData = struct
datatype t = T of int | S of string
end
signature A = sig
datatype t = datatype AData.t
end
structure a : A = struct
open AData
end
Конечно, такой подход, хотя и не то, что удовлетворение, является приемлемым, если я ставлю как AData
и A
в том же .sig
файле.
Это имеет смысл. Подпись предназначена для скрытия реализации. Просто подумал, что я мог бы поставить вспомогательные функции в другую (вложенную) структуру и открыть ее. – shhyou