Pth*_*ame 8 polymorphism haskell type-constraints
基本上,给定{-# 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"
Run Code Online (Sandbox Code Playgroud)