Types F#什么类型的(+;)
我是新来的。我试图找到少数值的类型,如(+),pown等。 虽然我模糊地理解(int->int->int)的意思是“一个取整数的函数,它返回一个取整数并返回整数的函数。” 但是,我不明白英语中Types F#什么类型的(+;),types,f#,Types,F#,我是新来的。我试图找到少数值的类型,如(+),pown等。 虽然我模糊地理解(int->int->int)的意思是“一个取整数的函数,它返回一个取整数并返回整数的函数。” 但是,我不明白英语中的意思 (+);; val it : (int -> int -> int) = <fun:it@1> (+);; val it:(int->int->int)= 任何有助于理解该概念的帮助都将不胜感激。我猜您正在使用F#Interactive(fsi)来计算表达式。在这种情
的意思
(+);;
val it : (int -> int -> int) = <fun:it@1>
(+);;
val it:(int->int->int)=
任何有助于理解该概念的帮助都将不胜感激。我猜您正在使用F#Interactive(fsi
)来计算表达式。在这种情况下,您应该这样读取程序的输出:
=>表示与上一个计算表达式的绑定val-it
=>冒号后面是上次计算的表达式的类型:(int->int->int)
=>等号后面是上一个计算表达式的值=
(+)
类型的问题。您询问的部分只是函数的值,fsi
在此无法显示任何有意义的内容。如果您尝试定义自己的函数,您将得到类似的结果:让fx=x+1;;f、 )代码>产生valit:(int->int)=
现在,要完全回答关于的问题,这有点棘手,因为它是一个重载运算符,需要更高级的知识才能理解。基本上,如果存在一个名为(+)
的静态成员的类,其输入类型为^T1
和^T2
,那么您可以对^T1
和^T2类型的值使用(+)
运算符。下面是对(+)这种棘手类型的解释
谢谢您的解释。我来自命令式背景,我倾向于将概念与C/C++等价物进行比较。这些语言允许传递函数指针作为回调的参数。不太确定,但是,f函数中的函数值可以被认为与C/C++的函数指针有点类似……我想这样做不会有什么害处,但是实际上函数值是作为实例传递的。