OCaml - 可以枚举自定义联合类型吗?

问题描述 投票:0回答:1

有这样的不相交联合类型:

type yolo = | A | B | C

在 OCaml 中是否可以迭代/枚举类型

yolo
的每个可能值,而无需事先知道这些值有多少/是什么?

我想要实现的是一个函数,它接受一个类型并返回一个包含其所有值的列表。例如:

let yolos = extractor yolo
val yolos : yolo list = [A; B; C]

(我正在寻找一种方法来实现上面代码片段中的

extractor
功能)

在 F# 中,我的目标可以通过类似这样的东西来实现:

open Microsoft.FSharp.Reflection

type yolo =
    | A
    | B
    | C
let yolos = FSharpType.GetUnionCases typeof<yolo>
reflection ocaml enumeration disjoint-union
1个回答
0
投票

看起来您正在寻找 Jane Street 的

ppx_enumerate
,它正是这样做的,甚至可以使用多态类型。

© www.soinside.com 2019 - 2024. All rights reserved.