J. *_* M. 7 haskell type-families type-kinds
在以下示例中:
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeFamilyDependencies #-}
{-# LANGUAGE PolyKinds #-}
newtype A a b = A (a, b)
type family F (x :: k) = (r :: k) | r -> x
type instance F (A a) = A a
type instance F (A a b) = A a b
Run Code Online (Sandbox Code Playgroud)
在我目前的理解中,第一个类型实例处理*->*kind,而第二个实例处理*.
因此,即使我使用相同的 newtype A,我也看不到任何注入性违规风险,因为绝对没有A a匹配 a ,A a b因为它们甚至没有相同的类型。
然而 GHC 8.6.5 抱怨这两种类型的实例违反了注入性,但这是为什么呢?有解决方法吗?
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |