gpt4 book ai didi

ocaml - Ocaml 中的括号

转载 作者:行者123 更新时间:2023-12-04 16:27:55 29 4
gpt4 key购买 nike

我正在评估 Ocaml 顶层中的一段非常简单的代码:

let p5 () = print_int 5;;
p5 ();;

print_string "*************************";;

let p4 = print_int 4;;
p4;;

它返回:
val p5 : unit -> unit = <fun>
# 5- : unit = ()
# *************************- : unit = ()
# 4val p4 : unit = ()
# - : unit = ()

我的问题是
  • () 是什么意思let p5 () = print_int 5;; 中的平均值?
  • 做什么-() # 5- : unit = () 中的平均值?
  • p4一个函数?
  • 为什么会有4# 4val p4 : unit = () 的开头?
  • 看来()可以在 Ocaml 代码中使用来隐藏副作用,有人可以给我看一个例子吗?
  • 最佳答案

    这里有一些答案:

  • ()是单位类型值。单位类型是只有一个值的类型。这通常用于生成没有任何意义的函数或没有任何意义的函数。请记住,在 OCaml 中,所有函数都必须返回一些内容并接受一些参数,因此使用单元类型来绕过这个限制。想想这类似于 void输入 C、C++ 或 Java。
  • 有两行交错。 5print_int 打印函数而不是顶层。顶层只返回 - : unit = ()没有 5 .顶层告诉你它没有创建任何新的绑定(bind) -并且最后一个返回值的类型为 unit并具有值 () .
  • 不,它不带任何参数,所以它不是一个函数。
  • 同样有两行交错。 4print_int 打印功能。这时,顶层告诉你,它创建了一个新的绑定(bind) p4 ,即该变量带有 unit 类型的值并且存储的值为() .
  • 不,()不用于隐藏副作用。它通常用于创建具有副作用的函数,因此不需要任何类型的参数。
  • 关于ocaml - Ocaml 中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711255/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com