如何在F#interactive中查看运算符的类型?

时间:2011-03-17 03:05:34

标签: f#

我正在尝试探索F#interactive中的::等运算符的类型。

但是我得到了这些消息:

Unexpected symbol '::' in expression. Expected ')' or other token.

即使我用(::)包围它。

2 个答案:

答案 0 :(得分:8)

我这样做:

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

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

> let inline showmepow a b = a ** b;;

val inline showmepow :
   ^a ->  ^b ->  ^a when  ^a : (static member Pow :  ^a *  ^b ->  ^a)

答案 1 :(得分:4)

如果用括号括起来,你会看到常用操作符的类型:

> (+);;
val it : (int -> int -> int) = <fun:it@4-5>

不幸的是,这会将运算符的类型限制为一种特定类型 - F#Interactive不会打印多态定义(带约束)。您可以使用Stephen建议的解决方法(并定义新的inline函数)来查看。

它不适用于::的原因是::实际上是一个特殊的句法结构(直接在F#规范中定义)。