как уже упоминалось, функциональный подход обычно предпочтительнее.
Однако могут быть сценарии, в которых вы хотите использовать императивные функции ocaml:
let value = ref 2;;
begin
if 1=2 then
value := 4
else
value := 3
end;
let double = !value * 2
Обратите внимание, что нужно убедиться, что тип выражения в if-ветви и в else-ветви должен быть одинаковым - здесь unit - в противном случае компилятор жалуется (конечно).