Sof*_*mur 2 ocaml makefile runtime compilation
我有一个.ml在我的定义中编译的列表makefile,完成后main/mail.ml.
我failwith "to do"在这些文件中有一些函数体.之前,我记得它只在运行时执行需要该函数时引发错误.
今天我所有的编译.ml工作正常:.cmi,cmx并且.o都产生.但是,当我启动主要的二进制文件,它似乎并没有先运行是什么let ()的main.ml,相反,它似乎检查首先列表的文件.ml中makefile,并提出Fatal error: exception Failure("to do") make: *** [all] Error 2当遇到第一个faiwith "to do".
我发现这种行为很奇怪,谁能告诉我可能是什么原因?我makefile或者有什么问题main.ml?
failwith仍然被允许!但这有时也会发生在我身上.
通常问题是,不是使功能值失败,而是使非功能值失败,这意味着failwith实际上在模块初始化期间执行.所以很可能你的代码中的某处写了:
let f = failwith "TODO"
Run Code Online (Sandbox Code Playgroud)
failwith在模块初始化时执行的地方而不是:
let f x = failwith "TODO"
Run Code Online (Sandbox Code Playgroud)
其中,failwith被当函数执行f实际上是用参数来调用.