В OCaml 3.11 я хочу "расширить" существующий модуль с помощью включать директивы, как так:
module MyString = struct
include String
let trim s = ...
end
Нет проблем. Но теперь я хочу выставить тип этого модуля явно (т.е. в .mli файле). Я хочу что-то вроде этого:
module MyString : sig
include String
val trim : string -> string
end
Но включать синтаксис не правилен, потому что Строка относится к модулю, не типу модуля (и компилятор действительно блюет). Как я могу обратиться к типу модуля для Строки здесь (без наличия, выписывают его явно в выражении сигнала)?
Спасибо!
В OCaml 3.12 будет конструкция типа module type of M
, которая, как мне кажется, решила бы вашу проблему. Между тем, вы можете заставить компилятор генерировать длинную сигнатуру с помощью ocamlc -i
. Извините, но я думаю, что это лучшее, что можно сделать с 3.11.