Ocaml操作无序执行

时间:2012-09-18 17:32:35

标签: functional-programming ocaml

在Ocaml中我有一个“全局”(即有文件范围)数组,用一些数字初始化,然后我对这些数字做一些操作,然后我调用一个函数来将这些数字加在一起。现在因为这个数组是“全局的”我不打算将数组作为参数传递,最终发生的事情是Ocaml计算了初始化数字的总和(在编译时我猜),而不是我对数组的操作之后已经发生过。我的问题是,为什么会发生这种情况?我花了大约3个小时试图追查这个错误!这是否与Ocaml的无副作用部分有关?如果是这样的话,从来没有这样的事情会发生什么规则呢?

由于

编辑:你们是对的,我从根本上搞砸了。这本质上是我的代码

let my_array = Array.make 10 0;;

let sum_array = ...;;

let my_fun = 
  do_stuff_with_array args;
  sum_array;;

所以当然正在计算sum_array。将其更改为此并且有效,这是最佳解决方案吗?

let my_array = Array.make 10 0;;

let sum_array _ = ...;;

let my_fun = 
  do_stuff_with_array args;
  sum_array ();;

0 个答案:

没有答案