我想编写一个模块(在 Ocaml 3.12 中)能够将 Variant 类型定义为现有不同类型的聚合
它可以是 0 到 N 种类型,所以是一个变量列表或集合
它可能看起来像这样:
type newtype = Type0 of type0 | Type1 of type1 | ... | TypeN of typeN
当然我想分解它的创造
首先,我尝试创建一个由仿函数参数化的模块“复合”:
module Composite ( T0 : sig type t end ) ( T1 : sig type t end ) =
struct
type t = T0.t | T1.t
end
第一个困难:如何将一个可变的函子列表传递给“复合”模块?
这是进行的好方法吗?
edit1 : Variant 允许定义 XOR 类型定义(它是 T0 或 T1 但不是两者);如何定义 OR 类型定义(可以是 T0 或 T1 或两者)?