Как узнать, была ли уже вызвана функция в OCaml? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь сохранить значение в функции в OCaml, к которому я смогу получить доступ при следующем вызове функции. Есть ли способ сделать это?

1 Ответ

1 голос
/ 23 апреля 2020

Вы не можете сделать это функциональным способом, так как функция не будет чистой.

Вы можете использовать ref, чтобы сохранить желаемое значение и изменить его в функции.

Например, эта функция, которая вычисляет a + b + X, где X увеличивается на 1 при каждом вызове функции:

let my_function =
  let saved_value = ref 0 in
  fun a b ->
    saved_value := !saved_value + 1;  (* Increment the value *)
    a + b + !saved_value 

let () = Printf.printf "First: %d\n" (my_function 1 2)  (* 1 + 2 + 1 == 4 *)
let () = Printf.printf "Second: %d\n" (my_function 1 2)  (* 1 + 2 + 2 == 5 *)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...