Зависимая специализация подписи

Могу ли я специализировать тип в сигнатуре, используя типы до этого типа и в сигнатуре? Вот пример:

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
Другие вопросы по тегам