我(相对)是Haskell的新手,我想编写一些数学代码。例如,交换群。arising from the second field of `ProductAbGrpEl'
(type `AbelianGroupElement g1') 这是有道理的;然而,我不确定我如何才能做到这一点。(这里可能不适合使用类型族;我最初使用MultiParamTypeClasses和FunctionalDependencies,但遇到了其他问题,得到的印象是类型族更好
在阅读有关的文章时,我看到了示例 type Elem ce insert :: Elem ce -> ce -> ce这对我来说是有意义的,因为我使用了我的(可能适得其反的) OOP隐喻- Collects的一个实例有一个关联的类型(同义词) Elem ce。我被关联数据族的例子弄糊涂了,因为它不适合那
我有一个带有一系列约束的函数foo。当然,这些约束必须出现在使用foo的函数的签名中,所以我要做的是将foo约束包装在同义词FooCtx a b ... :: Constraint中。如果所有类型都公开了,这就很好了。但是,我使用函数依赖来生成约束列表中的某些类型,并且这些类型不会出现在foo的签名中。一个令人不满意的解决方案是