haskell - 有没有办法在 Haskell 的类型类中实现约束?

标签 haskell functional-programming class constraints typeclass

有没有办法(任何方式)在类型类中实现约束?

作为我正在谈论的示例,假设我想将 Group 实现为类型类。因此,如果存在三个函数,则类型将是一个组:

class Group a where
    product :: a -> a -> a  
    inverse :: a -> a 
    identity :: a

但这些都不是任何功能,但它们必须通过一些约束相关联。例如:
product a identity = a 
product a (inverse a) = identity
inverse identity = identity

ETC...

有没有办法在类的定义中强制执行这种约束,以便任何实例都会自动继承它?例如,假设我想实现 C2 组,定义为:
 data C2 = E | C 

 instance Group C2 where
      identity = E 
      inverse C = C

这两个定义唯一地确定了 C2(上面的约束定义了所有可能的操作 - 事实上,由于约束,C2 是唯一具有两个元素的可能组)。有没有办法使这项工作?

最佳答案

Is there a way to enforce this kind of constraint?



号码很多人一直在要求它,包括杰出的托尼霍尔,但目前还没有任何迹象。

这个问题将是 Haskell Prime 的一个很好的讨论主题。团体。如果有人提出了一个好的建议,很可能在那里找到。

附言这是一个重要的问题!

关于haskell - 有没有办法在 Haskell 的类型类中实现约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253235/

相关文章:

haskell - Haskell 如何在 MaybeT 实现中推断出正确的类型类?

Python相当于 map 列表?

C++ 重载运算符 << 让我做噩梦

javascript - 从对象数组构建 Json

f# - 匹配可区分联合时的类型通配符

java类关系,泛化实现关联聚合组合依赖

c++ - 具有函数指针的映射列表初始化的类

haskell - 为计算机音乐应用程序和 Haskell 安装 Euterpea

haskell - 如何在 Haskell 的文件中获取任意表达式的类型?

multithreading - Haskell 中的 forkIO 和协程