在HEAD中获得量化超类后,无法新建类型派生Ord1实例
(最初在头部黑客攻击
建造在这里.)
提交后7beb356e型,的双分裂器-5.5.13
和内-0.3.0.1
Hackage上的库无法编译。下面是一个最小化的示例:
{-#LANGUAGE通用新类型派生#-}
{-#LANGUAGE Standalone派生#-}
模块 缺陷 哪里
进口 数据。仿真器。课程
新型 T型 (f) 一 = 百万吨 ((f) 一)
衍生 ( 等式, 订单, 等式1
, 订单1
)
虽然这是用GHC 9.4和更早版本编译的,但在HEAD上编译失败:
$~/Software/ghc-9.5.20220920/bin/ghc错误
[1 of 1]编译错误(Bug.hs,Bug.o)
错误:9:14:错误:[GHC-39999]
•无法推导“等式(f a)”
产生于满足“Ord(f a)”所需的超类,
产生于满足“Ord1 f”所需的超类,
源于数据类型声明的“deriving”子句
从上下文:Ord1 f
受Bug.hs:9:14-17处“Ord1(T f)”派生子句的约束
或来自:Ord a受Bug.hs:9:14-17中量化上下文的约束
•推导(Ord1(T f))的实例时
|
9|,订单1
| ^^^^
错误:9:14:错误:[GHC-39999]
•无法推导“等式(f a)”
产生于满足“Eq1 f”所需的超类,
产生于满足“Ord1 f”所需的超类,
源于数据类型声明的“deriving”子句
从上下文:Ord1 f
受Bug.hs:9:14-17处“Ord1(T f)”派生子句的约束
或来自:等式a受Bug.hs:9:14-17量化上下文的约束
•推导(Ord1(T f))的实例时
|
9|,订单1
| ^^^^
解决方法是使用Standalone派生
:
新类型 T型 (f) 一 = 百万吨 ((f) 一)
衍生 ( 等式, 订单, 等式1
--,订单1
)
衍生 实例 订单1 (f) => 订单1 (T型 (f))
然而,感觉就像衍生
子句也应该能够做到这一点。