似乎OCaml在编译时运行一些表达式;例如,如果我写
let (_ : int) = 1 / 0
在文件的顶层,编译器将失败,并显示"未捕获的异常:Division_by_zero
"错误。
这是否意味着这些值是在二进制文件中编译时计算的?例如,如果我使用Core
,并且我写
open! Core
let date = Date.today ~zone:(force Time.Zone.local)
这是指编译时的日期,还是其他什么,比如程序执行的日期?
我无法重现您描述的行为。这是我看到的:
$ cat dz.ml
let (_ : int) = 1 / 0
$ ocamlc -c dz.ml
$ ocamlopt -c dz.ml
两个OCaml编译器是ocamlc和ocamlopt,它们在我的系统上都没有显示这种行为。
如果您给出特定的命令序列来重现您观察到的内容,这将有所帮助。