たけをです。

 いけがみさんの開発手法って、再帰関数の不動点求めてるみたいですね :)
#  というか、トップダウン設計って、実は不動点を求めることなのかしら。

On 9/29/05, Asaki NISHIKAWA <asakiasakiasaki / yahoo.co.jp> wrote:

> > オブジェクト指向になれていると、すぐに state monad が必要に
> > 感じますが、代数的なデータと再帰的なアルゴリズムで考えるくせが
> > 身につくと、実は state はあまり必要にならないという気がしてきます。
> >
>
> うーんこれぐらい考え方を変えてみたいですが、
> 先は遠そうです・・・。


 私もまだまだ道半ばって感じですが、現状での私の認識は

・実世界にあるもののモデリングにはOOPのほうが直感的。
  代数的なデータ構造にまでモデルを抽象化できるなら (あるいは、そうする事に価値があるなら)、Haskellで考えた方が強い。
・単純な操作とその合成だけで沢山のデータを処理できるなら、Haskellで書きたくなる。
  (ハードウェアにたとえるなら、SIMDプロセッサ的)
  沢山の要素が相互作用を及ぼして、複雑に絡みあうようなものはOOPでやりたい
・組み合わせ計算をするなら、Haskellの方がはるかに楽

↑こんな感じだったりします。


 例えば木構造で与えられたデータの処理をする場合、トラバースする間に各ノードでの処理方法がその都度変わったり、頻繁にバックトラックしたり…といったようなものはOOPで、各ノードをオブジェクトにしたり、パーザに状態を持たせたり、、、とかやりたくなります。
 そうでなくて、各ノードでの操作が割に単一的で、一気に畳み込んだり展開したりできるなら、Haskellで再帰的に書いちゃえ、とか思います。

 先日の、山下さんが情報処理学会の会誌に書いた記事の例は、そういう意味で結構境界線だったりします。Haskellで書きたくなるけど、ちょっともどかしさを感じる、というか。

--
IMAI Takeo <usitukai / osk.3web.ne.jp>

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