何时计算文件顶层的OCaml表达式?

何时计算文件顶层的OCaml表达式?,ocaml,evaluation,Ocaml,Evaluation,似乎OCaml在编译时运行了一些表达式;e、 如果我写 let(:int)=1/0 在文件的顶层,编译器将失败,并出现“未捕获异常:除以0”错误 这是否意味着这些值是在编译时以二进制形式计算的?e、 例如,如果我使用的是Core,我写了 打开!核心 让date=date.today~zone:(强制Time.zone.local) 这是指编译时的日期,还是其他什么,比如程序执行的日期?我无法重现您描述的行为。我看到的是: $ cat dz.ml let (_ : int) = 1 / 0 $

似乎OCaml在编译时运行了一些表达式;e、 如果我写

let(:int)=1/0
在文件的顶层,编译器将失败,并出现“未捕获异常:
除以0
”错误

这是否意味着这些值是在编译时以二进制形式计算的?e、 例如,如果我使用的是
Core
,我写了

打开!核心
让date=date.today~zone:(强制Time.zone.local)

这是指编译时的日期,还是其他什么,比如程序执行的日期?

我无法重现您描述的行为。我看到的是:

$ cat dz.ml
let (_ : int) = 1 / 0
$ ocamlc -c dz.ml
$ ocamlopt -c dz.ml
这两个OCaml编译器是ocamlc和ocamlopt,它们在我的系统上都没有显示这种行为

如果你给出一个特定的命令序列来重现你所观察到的东西,这会有所帮助