Модуль OCaml: включить И открыть?

Я новичок в модуле OCaml, и мне не удалось использовать свой собственный модуль, не сочетая «включить» и «открыть». Я безуспешно пытался поместить подпись в отдельный файл .mli.

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

ocamlc -o main Robot.ml main.ml

Что мне нужно сделать, чтобы использовать только "open" или только "include", но не оба из них ?


Файл «Robot.ml»:

module type RobotSignature =
sig 
   val top: unit -> unit
end

module Robot =
struct
   let top () = 
      begin
         Printf.printf "top\n"
      end
   (* Should not be visible from the 'main' *)
   let dummy () = 
      begin
         Printf.printf "dummy\n"
      end
end

Файл «main.ml» (не работает):

open Robot;;

top();

Файл «main.ml» (работает):

include Robot;;
open Robot;;

top();
11
задан Loïc Février 3 April 2012 в 17:05
поделиться