要抑制 SML-NJ 提示和响应,请使用以下分配。
Compiler.Control.Print.out := {say=fn _=>(), flush=fn()=>()};
print "I don't show my type";
I don't show my type
虽然我不明白为什么返回类型的打印函数不好。
say 函数控制打印的内容。
以下 SML/NJ 笔记中有一个更大的示例http://www.cs.cornell.edu/riccardo/prog-smlnj/notes-011001.pdf
useSilently 函数可用于加载文件,但不显示与加载相关的任何输出
fun useSilently (s) = let
val saved = !Compiler.Control.Print.out
fun done () = Compiler.Control.Print.out := saved
in
Compiler.Control.Print.out := {say = fn _ => (), flush = fn () => ()}
(use (s); done ()) handle _ => done ()
end
这本质上是将 say 函数更改为什么都不做,然后在最后将其设置回来。