F#是什么类型(+)

时间:2018-06-05 03:40:51

标签: types f#

我是F#的新手。我尝试找到几个值的类型,如(+),pown等。 虽然我模糊地理解(int - > int - > int)意味着“一个带整数的函数,它返回一个取整数并返回一个整数的函数。”

但是,我不理解

<fun:it@1>的含义
(+);;  
val it : (int -> int -> int) = <fun:it@1>

理解这个概念的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:4)

我猜你正在使用F#Interactive(fsi)来评估表达式。在这种情况下,您应该如何阅读程序的输出:

  • val it =&gt;表示与最后评估的表达式的绑定
  • : (int -> int -> int) =&gt;冒号后面是最后一个评估表达式的类型
  • = <fun:it@1> =&gt;等号后面是最后一次评估表达式的值

因此,您可以看到您已经回答了有关( + )类型的问题。您要问的部分只是函数的值,fsi无法在此处显示任何有意义的内容。如果您尝试定义自己的函数,则会得到类似的结果:let f x = x + 1;; f;;会产生val it : (int -> int) = <fun:it@4>

现在,要完全回答有关type of ( + )的问题,这有点棘手,因为它是一个重载的运算符,需要更高级的知识才能理解。基本上,如果存在一个具有名为( + )的静态成员且具有类型^T1^T2的输入的类,则可以对{{1}类型的值使用( + )运算符}和^T1