Зависимая специализация подписи
Могу ли я специализировать тип в сигнатуре, используя типы до этого типа и в сигнатуре? Вот пример:
signature A = sig
type t
type s
end
Могу ли я специализироваться A
по следующему?
signature B = A where type s = t list
И SML/NJ, и Mlton жалуются, что t
не связан.
1 ответ
Решение
Нет, это действительно нельзя сделать напрямую. Причины носят технический характер, и в общем случае нелегко приписать правильную семантику такой операции.
Самое близкое, что вы можете получить, это ввести еще один вспомогательный тип:
signature B =
sig
type t'
include A with type t = t' with type s = t' list
end