考虑一个类别的定义如下: trait Category[~>[_, _]] {
def id[A]: A ~> A
def compose[A, B, C](f: A ~> B)(g: B ~> C): A ~> C
}
下面是一元函数实例: object Category {
implicit def fCat = new Category[Function1
根据the Typeclassopedia(其它来源之一),Applicative逻辑Monad和Pointed(因此Functor)之间所属的类型的类层次结构,所以我们非常有这样的事情,如果Haskell的前奏是今天写的: class Functor f where
fmap :: (a -> b) -> f a -> f b
class Functor f => Pointed