Я хотел бы реструктурировать свой проект из плоской иерархии файлов/модулей в более вложенный. Вот то, что я сейчас:Организация проектов OCaml: файлы и модули
. # Modules:
├── fruit_apple.ml # Fruit_apple
├── fruit_lemon.ml # Fruit_lemon
├── pie_apple.ml # Pie_apple
└── pie_lemon.ml # Pie_lemon
Вот что я хочу получить:
. # Modules:
├── fruit
│ ├── apple.ml # Fruit.Apple
│ └── lemon.ml # Fruit.Lemon
└── pie
├── apple.ml # Pie.Apple
└── lemon.ml # Pie.Lemon
OCaml имеет автоматическое отображение из имени файла модуля имя, но это, кажется, не есть для каталогов и вложенных файлов.
я мог бы pie.ml
и fruit.ml
файл, в котором я включаю необходимые подмодулях:
(* pie.ml *)
module Apple = struct
include Apple
end
module Lemon = struct
include Lemon
end
Но я не знаю, как разрешить неоднозначность между pie/apple.ml
и fruit/apple.ml
.
Я пытался изучать Core библиотеку, которая имеет Core
пространство имен с вложенными модулями Core.Bool
, Core.Bag
и так далее, но я не мог найти core.ml
там файл, который я предполагаю, объединяющее все подмодулей.
Ядро упаковано в опцию '-pack', так что каждый модуль автоматически окутан в модуль' Core'. То, что вы ищете, это 'std.ml' – ivg
возможный дубликат [Как создать иерархию многоуровневого модуля с (или без) Oasis] (http://stackoverflow.com/questions/28722704/how-to-make -a-многоуровневый-модуль-иерархия-с-или-без оазиса) – ivg