gpt4 book ai didi

Haskell 重叠实例和类型函数

转载 作者:行者123 更新时间:2023-12-04 07:59:32 26 4
gpt4 key购买 nike

我有以下类型类,它模拟了类似 SQL 的查询优化:

class OptimizableQuery q where
type Optimized q :: *
optimize :: q -> Optimized q

instance Query q => OptimizableQuery q where
type Optimized q = q
optimize q = q

instance (Query q, OptimizableQuery q) => OptimizableQuery (Select (Select q p) p) where
type Optimized (Select (Select q p) p) = Select (Optimized q) p
optimize (Select (Select q _) p) = Select (optimize q) p

问题是我在优化类型函数上收到错误“冲突族实例声明”。为什么会这样,我该如何解决?拥有一个“后备实例”真的很好,而不是必须用尽所有案例(可能很多)......

最佳答案

与类型族重叠的实例是非法的。见GHC manual ,“类型同义词实例的重叠”了解详细信息。

原因是类型函数应用程序根据可用实例有两种不同的可能结果可能会导致不健全。

关于Haskell 重叠实例和类型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4463154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com