【问题标题】:What does val it = () : unit mean in SML?val it = () : unit 在 SML 中是什么意思?
【发布时间】:2013-11-01 00:23:49
【问题描述】:

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

val it = () : unit

这是什么意思?是不是我做错了什么?

【问题讨论】:

    标签: sml smlnj


    【解决方案1】:

    it 是您的代码返回的结果的名称。 () : unit 是从基于副作用的事物返回的微不足道的占位符值。

    当您在提示符处输入更常见的表达式时会更明显,例如...

    - 2 * 7;
      val it = 14 : int
    

    【讨论】:

    • 啊,所以 SML 中的 () 为空?也许就像您编写一个无需任何参数即可调用的函数?
    • @HorseSMith:()unit类型的唯一值,单位类型,不携带信息的类型。 ML 中的所有函数都只采用一个参数。单元类型可以用作执行副作用且不需要(分别)获取或返回任何信息的函数的参数类型和/或返回类型。
    • 那么应该说这个val it = () : unit发生在交互顶层对某些副作用感兴趣的情况下,例如解释文件的内容并将其效果加载到顶部-级别。
    【解决方案2】:

    您也可以将其用于打印输出的副作用:

    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
    *)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 2015-12-30
      • 2012-10-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多