Java中的Haskell类型类层次结构

问题描述

| 我编写了一个具有类似于Haskell类型类的Java接口的库,并实现了实现所有\“ derivable \”方法的抽象类(例如,可以使用
>>=
return
编写
Monad.join
)。这是我计划的结构([]表示该接口尚不存在):
                      Applicative <= Alternative <-,Functor <= Pointed <= Applicative <= Monad <= MondPlus
Functor <= Copointed <= Comonad      Monad <= [MonadFix]

Category <= Arrow <= ArrowChoice   
            Arrow <= [ArrowApply]
            Arrow <= [ArrowLoop] 
            Arrow <= [ArrowZero] <= [ArrowPlus]
Bifunctor
此层次结构是否“正确”? 特别是MonadPlus实施Alternative是否正确? 我应该从MonadPlus中拆分MonadZero吗? ArrowZero和ArrowPlus的相同问题 当一个类实现多个\“ endpoints \”(例如,也许是MonadPlus和MonadFix,Kleisli是ArrowEverything)时,如何减少代码重复 理论上,Arrow可以扩展Applicative。当前,我在Arrow上有一个返回该Applicative的方法,因为它看起来像类型继承使继承在这里不可能。 我是否还缺少其他非显而易见的\“ connections \”(例如Arrow-> Applicative)? 在此层次结构中缺少哪些“有用的”类型类?     

解决方法

您应该确保查阅typeclassopedia。 爱德华·克梅特(Edward Kmett)一直在进行yeoman的工作,试图构造一个丰富,理智的核心类层次结构,从半群开始,然后向前发展。与他直接相对应的是值得的,但请看一下半群中标以及他为一些指针上载的许多相关软件包:     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...