【发布时间】:2013-11-01 00:23:49
【问题描述】:
我以前从未使用过 SML 编程,现在使用的是 SML/NJ。在我运行的每个程序结束时,它都会给我以下信息:
val it = () : unit
这是什么意思?是不是我做错了什么?
【问题讨论】:
我以前从未使用过 SML 编程,现在使用的是 SML/NJ。在我运行的每个程序结束时,它都会给我以下信息:
val it = () : unit
这是什么意思?是不是我做错了什么?
【问题讨论】:
it 是您的代码返回的结果的名称。 () : unit 是从基于副作用的事物返回的微不足道的占位符值。
当您在提示符处输入更常见的表达式时会更明显,例如...
- 2 * 7;
val it = 14 : int
【讨论】:
()是unit类型的唯一值,单位类型,不携带信息的类型。 ML 中的所有函数都只采用一个参数。单元类型可以用作执行副作用且不需要(分别)获取或返回任何信息的函数的参数类型和/或返回类型。
val it = () : unit发生在交互顶层对某些副作用感兴趣的情况下,例如解释文件的内容并将其效果加载到顶部-级别。
您也可以将其用于打印输出的副作用:
fun printpos n =
if n <= 0 then (print "not positive!\n")
else (print (Int.toString n); print "\n");
printpos ~1;
printpos 1;
(* Output:
val printpos = fn : int -> unit
not positive!
val it = () : unit
1
val it = () : unit
*)
【讨论】: