Я подозреваю, что вы думаете о x = x *. 2.0
как о выражении, которое меняет значение x
. Но в OCaml значение переменной нельзя изменить.
В выражениях OCaml =
- оператор сравнения на равенство. Так что x = x *. 2.0
это логическое выражение. То есть, это либо правда, либо ложь.
Поскольку вы не хотите, чтобы два выражения следовали друг за другом, подробности синтаксической ошибки, вероятно, бесполезны.
Хотя вы не можете изменить значение переменной, вы можете иметь любое количество локальных переменных, которые вам нравятся. Способ объявления локальной переменной выглядит следующим образом:
let my_local_variable = expression1 in expression2
Чтобы получить эффект, который вы смотрите далеко (я думаю), вы можете написать что-то вроде этого:
let idk (x: float) =
let local_x = x *. 2.0 in
if (local_x > 0.0) then true else false