F#将管道从int转换为bigint

F#将管道从int转换为bigint,f#,F#,我对F#还比较陌生,遇到了这个场景,希望有人能解释为什么我的编译器不喜欢这个代码 如果在F#中,我执行以下操作 let FloatToInt = 10.0 |> int let IntToFloat = 10 |> float let IntToBigInt = 10 |> bigint 一切正常,数字转换为相关数据类型 但是,如果我做以下事情 let FloatToInt = 10.0 |> int let IntToFloat = 10 |> float

我对F#还比较陌生,遇到了这个场景,希望有人能解释为什么我的编译器不喜欢这个代码

如果在F#中,我执行以下操作

let FloatToInt = 10.0 |> int
let IntToFloat = 10 |> float
let IntToBigInt = 10 |> bigint
一切正常,数字转换为相关数据类型

但是,如果我做以下事情

let FloatToInt = 10.0 |> int
let IntToFloat = 10 |> float
let IntToBigInt = 10 |> bigint
我收到一个错误“类型名称或对象构造函数的使用无效” 我假设这是因为bigint的forward管道没有操作符重载

如果我想让这段代码成为可能,我会怎么做?我知道我可以使用不同的语法,比如

let IntToBigInt = bigint(10)
但是我真的很喜欢Forward-Pipe语法,我想知道我是否可以实现它,以便

let IntToBigInt = 10 |> bigint

将工作…

它与重载无关
10.0 |>int
之所以有效,是因为有一个名为
int
的函数。但是,没有名为
bigint
的函数,因此
10 |>bigint
不起作用

如果您定义了一个,它将起作用:

> let bigint (x:int) = bigint(x);; // looks recursive, but isn't
val bigint : int -> System.Numerics.BigInteger

> 42 |> bigint;;
val it : System.Numerics.BigInteger = 42I

要添加到sepp,以前使用的
bigint
标记是一个类型构造函数,而不是一个函数。。。让y=1 |>bigint.op_隐式表示如何创建适用于所有类型的通用转换函数?