Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何看待F#interactive中运算符的类型?_F# - Fatal编程技术网

我如何看待F#interactive中运算符的类型?

我如何看待F#interactive中运算符的类型?,f#,F#,我试图探索F#interactive中的操作符类型,例如: 但我得到了这样的信息: Unexpected symbol '::' in expression. Expected ')' or other token. 即使我用(::)环绕它,我还是这样做: > let inline showmecons a b = a :: b;; val inline showmecons : 'a -> 'a list -> 'a list 或 如果用括号括起来,您将看到常用运算符的

我试图探索F#interactive中的操作符类型,例如

但我得到了这样的信息:

Unexpected symbol '::' in expression. Expected ')' or other token.
即使我用
(::)

环绕它,我还是这样做:

> let inline showmecons a b = a :: b;;

val inline showmecons : 'a -> 'a list -> 'a list


如果用括号括起来,您将看到常用运算符的类型:

> (+);;
val it : (int -> int -> int) = <fun:it@4-5>
(+);;
val it:(int->int->int)=
不幸的是,这将操作符的类型限制为一个特定的类型-F#Interactive不打印多态定义(带有约束)。您可以使用Stephen建议的解决方法(并定义一个新的
inline
函数)来了解这一点


它对
::
不起作用的原因是
实际上是一种特殊的语法结构(直接在F#规范中定义)。

这是非常古老的,但我正在学习F#,并且也想弄清楚这一点

查看第32页的,我们看到符号关键字在F#中也有一个编译名称。
的等效编译名是
op\u ColonColon
,它实际上接受元组:

> op_ColonColon;;
val it : arg0:'a * arg1:'a list -> 'a list = <fun:clo@22-5>`
>op_ColonColon;;
val it:arg0:'a*arg1:'a list->'a list=`
使用
::
定义一个内联函数会给我们一个通用的cons函数,我认为这是误导

> op_ColonColon;;
val it : arg0:'a * arg1:'a list -> 'a list = <fun:clo@22-5>`