さかいです。

From: Nobuo Yamashita <nobsun / sampou.org>
Subject: [haskell-jp:30] Re: catamorphism/anamorphism
Date: Wed, 26 Feb 2003 23:01:00 +0900 (JST)

> nobsun です。

> -- ふと思ったのですが、destructor は「破壊子」というよりは
> -- 「脱構築子」という訳がぴったりくるような気がしません?
> -- 言葉がすこしレトロかなぁ。^^;

ポストモダンはサッパリなのですが、
「脱構築子」というと何か「構築される前のもの」があらかじめあって、
それを引っ張りだしてくるという印象を私は受けるので、
destructorとは少しニュアンスが違うんじゃないかなぁという気がします。

ただの私のイメージに過ぎませんが (^^;

> > ちなみに、もっと専門的な言い方をすれば、
> > catamorphism = initial algebra からのユニークな homomorphism
> > anamorphism  = final coalgebra へのユニークな homomorphism
> 
> あぅぅ。トラウマがぁ。。。失礼しました。f(^^;)

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

まずTをFunctorとします。
(ものの本では通常はTを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 です。

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

ところで、T-algebraの中には、
どんなT-algebraへもhomomorphismがユニークに存在する
特別なT-algebraが存在することがあって、
それを initial algebra (始代数) と呼びます。

同様に、T-coalgebraの中にも、
どんなT-coalgebraからもhomomorphismがユニークに存在する
特別なT-coalgebraが存在することがあって、
それを final coalgebra (終余代数) と呼びます。

で、これがどう関わってくるかなのですが……
それは次回に続く。(^^;)

--
酒井 政裕 / Masahiro Sakai

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