使用 `-codegen c` 时 mlton 查看中间 C 文件

mlton view intermediate C file when using `-codegen c`

我有以下 SML 源文件,其中包含一个简单的函数:

(* fact.sml *)
fun fact_unguarded 0 = 1
  | fact_unguarded n = n * fact_unguarded(n-1)

fun fact 0 = SOME(1)
  | fact n = if n > 0 then SOME(n * fact_unguarded(n-1)) else NONE

我正在尝试使用 C 后端使用 MLTon 编译它并查看生成的 C 代码。

% mlton -codegen c fact.sml

但是,none 的中间文件被转储到当前工作目录中,/tmp 中似乎也没有任何相关内容。有没有办法将 MLTon 引导至 a) 仅生成 C 源文件并停止或 b) 即使在生成最终工件后仍保留中间文件。

% pwd
~/tmp/sml
% ls
fact*       fact.sml

mlton -stop g -codegen c 应该做你想做的事,但由于 MLton 的工作方式是一个完整的程序编译器,你的函数不会留下任何东西。