有这样的不相交联合类型:
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>
ppx_enumerate
,它正是这样做的,甚至可以使用多态类型。