为什么可以';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