Я очень начинающий программист на OCaml, поэтому, пожалуйста, прости меня, если это глупый / очевидный вопрос. много , чтобы поглотить, и я, возможно, пропустил это в документации.
У меня есть база кода, которая начинает выглядеть так:
let update_x p x =
add_delta p;
p.x <- x;
refresh p
let update_y p y =
add_delta p;
p.y <- y;
refresh p
let update_z p z =
add_delta p;
p.z <- z;
refresh p
Дублирование начинает меня беспокоить, потому что я хочу написать что-то вроде этого:
let update_scalar p scalar value =
add_delta p;
magic_reflection (p, scalar) <- value;
refresh p
Таким образом, когда я обновляю x, я могу просто позвонить:
update_scalar p 'x' value
Это вызывает "макросы!" для меня, но я не верю, что OCaml имеет макросистему. Что еще я могу сделать?