nobsun です。

> どうせなので、この辺りも少し説明しましょう。

おっ。すばらしい。よろしくお願いします。
 
> まずTをFunctorとします。
> (ものの本では通常はTをMonadとするので、
>  以下の定義はそれらの定義よりも多少弱い定義です)

ちょいと脱線(いきなりかい>私)。
Gofer で型構築子クラスが導入されたときの cc.prelude にあった定義は、

class Functor f where
  map :: (a -> b) -> (f a -> f b)
class Functor m => Monad m where
    result    :: a -> m a
    join      :: m (m a) -> m a
    bind      :: m a -> (a -> m b) -> m b

    join x     = bind x id
    x `bind` f = join (map f x)

のように、Monad になるためには、Functor でなければいけなかったのですが。。。
いまは、Functor と Monad は独立して定義されてますねぇ。

> T-algebra (T-代数)は関数 T a -> a
> T-coalgebra (T-余代数)は関数 a -> T a の事です。
> 
> 二つの T-algebra 
>  α :: T A -> A
>  β :: T B -> B
> が与えられたときに、αからβへの homomorphism (準同型射) は
> f . α = β . fmap f を満たす関数 f :: A -> B です。

        f
   A ―――→ B
   ↑        ↑
 α|      β|
 T A ―――→ T B
      fmap.f

> 同様に、二つの T-coalgebra
>  α :: A -> T A
>  β :: B -> T B
> が与えられたときに、αからβへの homomorphism は
> fmap f . α = β . f を満たす関数 f :: A -> B です。

        f
   A ―――→ B
   |        
 α|      β|
   ↓        ↓
 T A ―――→ T B
      fmap.f

> ところで、T-algebraの中には、
> どんなT-algebraへもhomomorphismがユニークに存在する
> 特別なT-algebraが存在することがあって、
> それを initial algebra (始代数) と呼びます。
> 
> 同様に、T-coalgebraの中にも、
> どんなT-coalgebraからもhomomorphismがユニークに存在する
> 特別なT-coalgebraが存在することがあって、
> それを final coalgebra (終余代数) と呼びます。
> 
> で、これがどう関わってくるかなのですが……
> それは次回に続く。(^^;)

をっ。

--
Nobuo Yamashita                 mailto:nobsun / sampou.org
  I love programming.           http://www.sampou.org/
  I love pencil puzzles.        http://www.puzzle.jp/

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/