Reputation: 46831
/// 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)
Upvotes: 4
Views: 618
Reputation: 56019
In my version of F# (1.9.4.19 on Mono), both versions fail with:
The member or object constructor 'BigInt' takes 0 argument(s) but is here given 1. The required signature is 'Math.BigInt()'.
I can use
let max = float n |> sqrt |> int64 |> Math.BigInt.of_int64
to get a bigint
or
let max = float n |> sqrt |> int64 |> Math.BigInt.FromInt64
to get a Math.BigInt
.
Upvotes: 0
Reputation: 118935
Class constructors cannot be used without arguments. You can write
let max = float n |> sqrt |> int64 |> (fun x -> Math.BigInt(x))
if you like. (Offhand I don't know the reason for this restriction, though.)
Upvotes: 3