我编写了一个带有类似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