【发布时间】:2025-12-30 15:10:12
【问题描述】:
有没有办法在 Haskell 中模仿 TypeScript 的可区分类型联合?我想做以下事情:
data A = B | C | D
data W = X | Y | Z
data FinalType = A | W
我知道最后一个定义将为FinalType 创建两个值构造函数A 和W。我现在可以通过以下方式正确地制作FinalType:
data FinalType = B | C | D | X | Y | Z
但这不是很整洁,并且在添加了很多值构造函数之后会变得很烦人。有没有办法在 Haskell 中缓解这种情况?
【问题讨论】:
-
data FinalType = A A | W W?或者您可以使用现有的Either类型构造函数和类型同义词:type FinalType = Either A W。 -
可以提供TS sn-p吗?你也可以解释为什么你用这种方式使用联合。也许有惯用的 Haskell 替代方案。
标签: haskell algebraic-data-types discriminated-union