F# 中的类型或具有父 Number 的类型层次结构中是否有 AND?

发布于 2024-10-21 20:47:30 字数 119 浏览 1 评论 0原文

我想定义一个整数和浮点数的列表,其中 [1,2.0] 应该是一个有效的结构。

F# 中的类型或类型层次结构中是否有 AND(例如从 Number 派生的 int 和 floats)?

谢谢。

I want to define a list of ints and floats, where [1,2.0] should be a valid construction.

Does F# have a AND in types or a type hierarchy with int and floats derived from Number for example?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

祁梦 2024-10-28 20:47:30

不,F# / .NET 没有像 Python 那样的数字塔,也没有像 Java 那样的通用 Number 基本类型。

也许您可以根据您的目的定义一个判别式联合:

type Number =
    | Float of float
    | Int of int

let x = [Float(3.2); Int(2)] //val x : Number list = [Float 3.2; Int 2]

No, F# / .NET does not have a numeric tower like Python, or a common Number base type like Java.

Perhaps you could define a discriminant union like so for your purposes:

type Number =
    | Float of float
    | Int of int

let x = [Float(3.2); Int(2)] //val x : Number list = [Float 3.2; Int 2]
自找没趣 2024-10-28 20:47:30

F# 没有像 Lisp/Scheme 那样的数字塔。

唯一受支持的联合类型是不相交联合,它必须包含标签。您可以这样写:

type Num = Int of int | Float of float

[Int 1; Float 2.0]

上面的值具有 Num list 类型。要使用元素,您可以使用模式匹配:

match num with
| Int x -> printf "%i" x
| Float x -> printf "%f" x

F# does not have a numerical tower like Lisp/Scheme.

The only kind of union type supported is a disjoint union which must include a tag. You could write:

type Num = Int of int | Float of float

[Int 1; Float 2.0]

The value above has type Num list. To consume the elements, you would use pattern matching:

match num with
| Int x -> printf "%i" x
| Float x -> printf "%f" x
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文