我正在尝试声明一个Either
类型列表的数据类型。
data EitherInts = [Either Int Int]
但是当我尝试编译这种类型时,我收到一个错误:
Cannot parse data constructor in a data/newtype declaration: [Either Int Int]
我不知道为什么。我做错了什么?
答案 0 :(得分:9)
data
用于定义新的代数数据类型,每个数据类型都必须有自己的构造函数。所以你可以写
data EitherInts = EitherInts [Either Int Int]
但你可能并不是这个意思:你想要某种类型的同义词。最简单的是类型别名:
type EitherInts = [Either Int Int]
的行为与[Either Int Int]
完全相同 - 它只是该现有类型的新缩写名称。