4

我有以下 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

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

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

1 回答 1

4

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

于 2017-11-05T19:31:31.033 回答