haskell - 约束上的平等

标签 haskell polymorphism type-constraints

基本上,给定 {-# LANGUAGE PolymorphicKinds, ConstraintKinds, TypeFamilies #-} (以及更多,如有必要),(~)类型级运算符作用于类型 Constraint 的类型级表达式?我试着用谷歌搜索答案,但没有运气。

最佳答案

对的,这是可能的。因为种类Constraint是有限的原子类型约束集,您可以很容易地测试它们的相等性。
PolyKinds然而,扩展是不必要的。此外,这种相等性实际上有用的情况很少,因为我看不到将多态约束作为参数传递的实用方法c1。 , c2Bla ,因此在每种情况下,约束相等都是重言式(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/

相关文章:

Scala:由嵌套类型值参数化的类型级编程

haskell - 检查点是否在半径内的函数

java - 重载和覆盖方法中的多态性

haskell - GHC 如何使用 Num 实例将多态数字文字转换为任意类型?

inheritance - 通过注解实现多态 JPA 的最佳实践

haskell - 排名 n 约束? (或者,monad 转换器和 Data.Suitable)

c# - 构造/制作通用类型并将类型约束转换为结构作为基础类型的约束

haskell - 如何使用 Snap 框架实现数据流?

ruby - 在 Ruby 中用队列代替方法链,用规则代替条件

xml - 优化 Haskell XML 解析器