Моя папка содержит несколько файлов, которые скомпилированы в следующем порядке: global.ml
, zone.ml
, abs.ml
], main.ml
global.ml
содержит некоторые ссылочные переменные (например, let g1 = ref 0
) для всех файлов.
В zone.ml
есть объявление let f =! G1
.
В abs.ml
есть g1: = 5
, который будет запускаться main
в начале выполнения, я считаю это как инициализация g1
с учетом реального контекста времени выполнения.
Позже main
вызовет Zone.f
. Любопытно, что я понимаю, что требуется f = 0
вместо f = 5
.
Считаете ли вы такое поведение нормальным? Если да, что я должен изменить, чтобы он учитывал текущее значение ! G1
?
PS: Может быть, одним из решений является создание функции let fv = v
в zone.ml
тогда пусть main
вызывает Zone.f! g1
. Но у меня есть несколько глобальных ссылочных переменных, таких как g1
в global.ml
, я надеюсь, что они могут быть действительны для всех файлов и функций, и я не хочу, чтобы они были задействованы в подпись функции.