0

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

例如,F# 是否在类型中具有 AND 或具有从 Number 派生的 int 和 float 的类型层次结构?

谢谢。

4

2 回答 2

5

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

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

type Number =
    | Float of float
    | Int of int

let x = [Float(3.2); Int(2)] //val x : Number list = [Float 3.2; Int 2]
于 2011-03-13T15:55:46.560 回答
3

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

唯一支持的联合类型是必须包含标签的不相交联合。你可以写:

type Num = Int of int | Float of float

[Int 1; Float 2.0]

上面的值有 type Num list。要使用元素,您将使用模式匹配:

match num with
| Int x -> printf "%i" x
| Float x -> printf "%f" x
于 2011-03-13T16:06:21.027 回答