1
6
您的更新的更新。 如果您愿意打开一些扩展,您可以使其工作:
但就我个人而言,我会尝试做一些类似的事情
你的问题是实例头(
也许您可以将类型更改为更像普通列表:
然后您可以有一个实例:
|
2
3
问题是在实例声明中: instance (Show a, Show b) => Show (OptionList a b) where show (OptionList a EmptyOpt) = "{" ++ (show a) ++"}" show (OptionList EmptyOpt b) = "{" ++ (show b) ++"}" show (OptionList a b) = "{"++ (show a) ++ ", " ++ (show b) ++"}" show EmptyOpt = ""
你
使用数据构造函数
因此,Haskell正确地推导出,您实际上定义了
所以我不清楚你的目标是什么;将其修改为:
也不会有帮助,因为结构是递归的,因此您将定义具有无限递归深度的实例。 在我看来,唯一合理的是,您的数据定义是错误的,应该是这样的:
在这种情况下,您可以将其定义为:
或者沿着这些线的东西。 |
3
0
我的想法是创建一个类型独立的列表。这个列表的元素应该包含声明的任何类型。但我会放弃,做一些类似C联合的事情:
|
Vasiliy Ivashin · 从类实例导入泛型隐式 7 年前 |
user1747134 · 导出线性包装时的一个类型检查错误 7 年前 |
Loic · 从超类型解析隐式参数 8 年前 |
lsund · 无法将类类型与haskell中的特定类型匹配 8 年前 |
muhuk · 如何匹配没有特定类型类实例的类型?[副本] 8 年前 |
Emre Sevinç · 如何解释类型检查的Haskell代码? 8 年前 |