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)
归档时间: |
|
查看次数: |
236 次 |
最近记录: |