基本上,给定 {-# LANGUAGE PolymorphicKinds, ConstraintKinds, TypeFamilies #-}
(以及更多,如有必要),(~)
类型级运算符作用于类型 Constraint
的类型级表达式?我试着用谷歌搜索答案,但没有运气。
最佳答案
对的,这是可能的。因为种类Constraint
是有限的原子类型约束集,您可以很容易地测试它们的相等性。PolyKinds
然而,扩展是不必要的。此外,这种相等性实际上有用的情况很少,因为我看不到将多态约束作为参数传递的实用方法c1
。 , c2
至Bla
,因此在每种情况下,约束相等都是重言式(Show ~ Show
这里):
{-# LANGUAGE ConstraintKinds, TypeFamilies #-}
type Bla c1 c2 a = (c1 a, c2 a, c1 ~ c2)
foo :: Bla Show Show a => a -> IO ()
foo = print
main = foo "Bla"
关于haskell - 约束上的平等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9622840/