Как вы включаете содержимое/модуль файла из каталога в Ocaml?
└── bin
├── file_1.ml
└── directory
└── file_2.ml
В этом примере, как вы получаете доступ к содержимому file_2 в файле file_1.
Я не могу понять это, хотя это кажется тривиальным.
(* file_2.ml *)
module File2 = struct
(* Define your module contents here *)
end
(* file_1.ml *)
open Directory.File2 (* Assuming "Directory" is the name of the parent directory *)
(* Access the contents of the module *)
Вы можете использовать include_subdirs
, чтобы сигнализировать dune о том, что вы хотите включить подкаталоги:
└── bin
├── dune
├── file_1.ml
└── directory
└── file_2.ml
Есть два разных режима включения, безоговорочное включение
; bin/dune file
(include_subdirs unqualified)
(executable (name file_1))
которые делают все модули из подкаталогов доступными в пространстве имен основного каталога:
(* bin/file_1.ml *)
module F2 = File_2
или квалифицированное включение
; bin/dune file
(include_subdirs qualified)
(executable (name file_1))
что делает модули из подкаталога по пути a/b/c
доступными как A.B.C.File_name
:
(* bin/file_1.ml *)
module F2 = Directory.File_2
Другая возможность связать содержимое каталога с дюной — сделать каталог локальной библиотекой:
└── bin
├── dune
├── file_1.ml
└── local_lib_dir
├── dune
└── file_2.ml
где файл dune
для bin
находится
; bin/dune
(executable
(name file_1)
(libraries local_lib)
)
и тот, что в локальном каталоге
; bin/local_lib_dir/dune
(library
(name local_lib)
)
Затем можно использовать модуль, определенный file_2
с
(* bin/file_1.ml *)
module F2 = Local_dir.File_2
внутри каталога bin
.
Помните, что Stack Overflow предназначен не только для решения непосредственной проблемы, но и для того, чтобы помочь будущим читателям найти решения похожих проблем, что требует понимания базового кода. Это особенно важно для членов нашего сообщества, которые являются новичками и не знакомы с синтаксисом. Учитывая это, можете ли вы отредактировать свой ответ, включив в него объяснение того, что вы делаете, и почему вы считаете, что это лучший подход?