bonotakeの日記

元・ソフトウェア工学系研究者、今・AI系エンジニア

余代数

http://d.hatena.ne.jp/m-hiyama/20060615/1150330754から一連の議論を読んで、オブジェクト指向の話でも書こうかしらん、と思ったけど、そのうち余代数の方に興味がシフトしていってhttp://www.chimaira.org/docs/AlgebrasCoalgebras.htm とか http://citeseer.ist.psu.edu/jacobs99coalgebra.html とかを読んだ。なるほど。やっとこさ「余代数」なんてへんちくりんなものがわかった…気になった弱いなぁ。いや、面白い。

しかし、例えば状態を扱うのに、例えばHaskellでは代数(モナド、例えばStateモナド)でやって、Java(のようなOO言語)では余代数でやっている(事になる)のが何とも不思議、というかまだ頭が整理されてない。
確かにコードを書くときの扱い方は違う気がする。モナドの方は陽に状態を戻り値として持たなきゃいけなくて、ユーザが意図的に状態付きにして返す。Javaはそんな事しない。…けど、単なる関数型と手続き型のfavorの違いじゃないかという気も。

HaskellのStateモナド T a \to a を自動化していて(>>=オペレータ)、Javaでは言語的に a \to T a を自動化しているって事なのかなぁ。ん?それって何か目新しい事言ってる?



…自分で書いてて( ´_ゝ`)フーンて感じなんだけどいいのかそんなんでw

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。