Edward Kmett报告了种类推断中的一个错误,这对他的类别库来说非常烦人。
我不知道在 GHC 的某些更高版本中是否已经解决了这个问题。它似乎存在于 8.10.7 和 9.0.2 中。
{-# LANGUAGE PolyKinds #-}
class D a => C (f :: k) a
class C () a => D a
Run Code Online (Sandbox Code Playgroud)
data W f (a :: k) where
MkW :: W Maybe Int -> W f a
Run Code Online (Sandbox Code Playgroud)
如何获取有关此问题的信息(例如:它是否会得到解决)?
这并没有回答所提出的问题(“错误何时会被修复?”),但我认为知道添加显式类型签名使得使用 GHC 8.10.5 和 GHC >= 9 进行编译可能会很有用(前提是某些扩展已启用)。
-- extensions for GHC 8.10.5
{-# LANGUAGE UndecidableInstances, ExplicitForAll,
PolyKinds, UndecidableSuperClasses,
StandaloneKindSignatures, MultiParamTypeClasses,
FlexibleContexts #-}
import Data.Kind
type D :: Type -> Constraint
type C :: forall k. k -> Type -> Constraint
class D a => C (f :: k) a
class C () a => D (a :: *)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |