我用类似Haskell类型类的Java接口编写library,实现所有“可派生”方法的抽象类(例如Monad.join
)可以使用>>=
和return
编写)。这是我计划的结构([]表示接口尚不存在):
Applicative <= Alternative <-,
Functor <= Pointed <= Applicative <= Monad <= MondPlus
Functor <= Copointed <= Comonad Monad <= [MonadFix]
Category <= Arrow <= ArrowChoice
Arrow <= [ArrowApply]
Arrow <= [ArrowLoop]
Arrow <= [ArrowZero] <= [ArrowPlus]
Bifunctor
答案 0 :(得分:4)
您应该参考typeclassopedia。
爱德华·凯梅特一直在努力构建一个丰富,理智的核心类层次结构,从半群开始向前迈进。值得直接与他对应,但是看看semigroupoids和他上传的许多相关软件包以获得一些指示: