我可以将变体类型定义为“其他变体加上新的构造函数”而不复制粘贴垃圾邮件吗?

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

如果我有一些变体类型

foo

type foo =
  | A
  | B of string

并且我想创建一个new变体类型

bar
,看起来与
foo
完全相同,但是使用新的构造函数(任意,例如
C of float * int
),有没有一种方法可以定义它,而无需写出完整的
 type bar = A | B of string | C of float * int

ocaml
1个回答
0
投票

我不知道是否可以使用常规变体类型来完成,但可以使用多态变体类型来完成:

# type foo = [ `A | `B of string ]
  type bar = [ foo | `C of float * int ];;
type foo = [ `A | `B of string ]
type bar = [ `A | `B of string | `C of float * int ]
© www.soinside.com 2019 - 2024. All rights reserved.