我如何查看某个函数是否已在 OCaml 中调用?
How can I see if a function has already been called in OCaml?
我正在尝试在 OCaml 的函数中保存一个值,以便下次调用该函数时可以访问该值。有办法吗?
你不能以函数式的方式做到这一点,因为函数不是纯粹的。
你可以使用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 *)
我正在尝试在 OCaml 的函数中保存一个值,以便下次调用该函数时可以访问该值。有办法吗?
你不能以函数式的方式做到这一点,因为函数不是纯粹的。
你可以使用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 *)