val it=():单位在SML中是什么意思?
我以前从未在SML中编程,我正在使用SML/NJ。在我运行的每个程序结束时,它都会给我以下信息:val it=():单位在SML中是什么意思?,sml,smlnj,Sml,Smlnj,我以前从未在SML中编程,我正在使用SML/NJ。在我运行的每个程序结束时,它都会给我以下信息: val it = () : unit 这是什么意思?是我做错了什么吗?它是代码返回的结果的名称():unit是从基于副作用的事物返回的一个微不足道的占位符值 当您在提示符处输入更常见的表达式时,这一点更为明显,例如 - 2 * 7; val it = 14 : int 您还可以将其用于打印内容的副作用: fun printpos n = if n <= 0 then (pri
val it = () : unit
这是什么意思?是我做错了什么吗?
它是代码返回的结果的名称():unit
是从基于副作用的事物返回的一个微不足道的占位符值
当您在提示符处输入更常见的表达式时,这一点更为明显,例如
- 2 * 7;
val it = 14 : int
您还可以将其用于打印内容的副作用:
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
*)
fun printposn=
如果n单位
不肯定!
val it=():单位
1.
val it=():单位
*)
Ah,那么()在SML中是空的吗?也许就像当你编写一个函数时,不需要任何参数就能被调用一样?@HorseSMith:()
是类型unit
的唯一值,该类型不携带任何信息。ML中的所有函数只接受一个参数。单元类型可以用作执行副作用的函数的参数类型和/或返回类型,并且不需要(分别)获取或返回任何信息:unit
发生在交互顶层对某些副作用感兴趣的情况下,例如解释文件内容并将其效果加载到顶层。