val it=():单位在SML中是什么意思?

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

我以前从未在SML中编程,我正在使用SML/NJ。在我运行的每个程序结束时,它都会给我以下信息:

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
发生在交互顶层对某些副作用感兴趣的情况下,例如解释文件内容并将其效果加载到顶层。