Используя модуль включают в OCaml

В OCaml 3.11 я хочу "расширить" существующий модуль с помощью включать директивы, как так:

module MyString = struct
  include String
  let trim s = ...
end

Нет проблем. Но теперь я хочу выставить тип этого модуля явно (т.е. в .mli файле). Я хочу что-то вроде этого:

module MyString : sig
  include String
  val trim : string -> string
end

Но включать синтаксис не правилен, потому что Строка относится к модулю, не типу модуля (и компилятор действительно блюет). Как я могу обратиться к типу модуля для Строки здесь (без наличия, выписывают его явно в выражении сигнала)?

Спасибо!

6
задан Geoff 5 May 2010 в 21:00
поделиться

1 ответ

В OCaml 3.12 будет конструкция типа module type of M, которая, как мне кажется, решила бы вашу проблему. Между тем, вы можете заставить компилятор генерировать длинную сигнатуру с помощью ocamlc -i. Извините, но я думаю, что это лучшее, что можно сделать с 3.11.

5
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: