我正在用标准 ML (SML/NJ) 编写一个“脚本”,根据我的喜好设置交互式环境。该脚本所做的最后一件事是打印一条消息,表明一切顺利。本质上,最后一行是这样的:
print "SML is ready.\n";
当我运行脚本时,一切顺利,但 SML 解释器显示来自print功能。
SML is ready.
val it = () : unit
-
由于我只是在屏幕上打印一些内容,因此如何抑制“val it = () : unit”输出,以便我看到的只是“SML 已准备好”消息,后跟解释器提示符?
要抑制 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 函数更改为不执行任何操作,然后在最后将其设置回来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)