为什么可以';t F#推断此语句的类型?

为什么可以';t F#推断此语句的类型?,f#,functional-programming,type-inference,F#,Functional Programming,Type Inference,类构造函数不能在没有参数的情况下使用。你可以写 /// I can't do this let max = float n |> sqrt |> int64 |> Math.BigInt /// But this is allowed let max = Math.BigInt(float n |> sqrt |> int64) 如果你愿意的话。(我不知道这个限制的原因。)在我的F#(Mono上的1.9.4.19)版本中,两个版本都失败了: 成员或对象构造函

类构造函数不能在没有参数的情况下使用。你可以写

/// I can't do this
let max =  float n |> sqrt |> int64 |> Math.BigInt

/// But this is allowed
let max =  Math.BigInt(float n |> sqrt |> int64)
如果你愿意的话。(我不知道这个限制的原因。)

在我的F#(Mono上的1.9.4.19)版本中,两个版本都失败了:

成员或对象构造函数
“BigInt”接受0个参数,但为
这里给出1。所需签名
是“Math.BigInt()”。

我可以用

let max =  float n |> sqrt |> int64 |> (fun x -> Math.BigInt(x))
获取
bigint

let max =  float n |> sqrt |> int64 |> Math.BigInt.of_int64

要获得
Math.BigInt

不,在这种情况下,它是在中定义的函数。您能告诉我在哪里找到BigInt的平方根吗?库中没有为BigInt定义的Sqrt函数。@Brian您知道是否会有一个吗?不,我不认为.Net 4.0的System.Numerics.BigInteger计划有一个。你可以自己创作。
let max =  float n |> sqrt |> int64 |> Math.BigInt.FromInt64