OCaml函数声明中使用":"的目的是什么?

5
实际上,OCaml语句是什么意思?
let func (v: A.a) : unit =    

#rest of the function
  1. 这是否意味着它接受类型为A.a的v并返回unit?
  2. 还是它接受两个参数v和A.a,并返回一个unit?
  3. 或者它接受一个带有参数A.a的函数v并返回一个unit?
  4. 还是其他什么?

1
我本以为这个问题会在OCaml手册的开头就有详细解释,但是我找不到任何相关内容。 - molbdnilo
是的,这就是我在这里发布的原因。 - P basak
3个回答

5

let func (v: A.a) : unit =

第一个 : 表示 v 是一个参数,其类型应该是 A.a

第二个 : 表示 func 期望返回一个 unit 类型


2

在OCaml中,函数是值,如果A.a是函数类型,那么func的第一个参数就是函数。

可能还有第三个参数。请注意保留HTML标签。

这里的“unit”是返回类型吗?还是“unit”是整个(v:A.a)语句的类型? - P basak
1
是的,最后一个没有括号的 : something 是整个函数的返回类型。 - Kakadu

2

这意味着:

即如果v的类型为A.a,那么func v的类型为unit
或者等价地说,func的类型是A.a -> unit


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接