西川です。

> > 今まで手続き型の言語(主にJava)しか使ってなかったのですが、
> > Mathematicaに触れて全く違う思考の仕方をする関数型言語に興味を覚え、
> > いろいろ調べた結果、Haskellを始めることにしました。
> > 現在始めて一ヶ月程度で、なんとか手が動くようになってきましたが、
> > 関数型言語ではどういうスタイルで考えるのがいいのかイマイチ分からないとい
う
> > 段階です。
>
> どのような苦労があったか,披露していただけるとうれしいです.

うーん具体例(ソース)を思い出せなくて申し訳ないのですが

・アルゴリズムとデータ構造が依存するのが嫌で
(たとえばコード中に「タプルの何番目にxxがある」ということを仮定するような場
所が増えるなど)、
いちいち遮蔽していたら、データ遮蔽用のコードが増えすぎて(なんでもclassにし
ていた)
Javaのようになってしまった
→現在はあまり再利用性は気にしないでリスト、マップ、構造体で作ってしまえばい
いやという
ことに落ち着いてます。もともとプロトタイピングを素早くできるようになるのが目
標なので

・「継承」や「オーバーロード」に相当することはどうればいいのか?
→結局解消していないので諦め

・同じ名前のフィールドが持てないので名前がおかしくなる
(たとえばidというフィールドなのに、aidなど接頭辞をつけないと重なってしま
う)
→諦めて接頭辞をつけている

・状態がないので最初はひたすら引数を増やして状態を持ちまわっていた
→だからモナドが必要なのか、と理解して使ってみたが、これだと手続き型と変わら
ないような・・・

結局のところ、
・手続き型+OOPのスタイルに近づけて組むことは可能だが、それだと意味がないよ
うな
・では、Haskellの利点を生かした組み方って?
・・・という疑問は現在も解消していません。

とにかく簡単なものをJavaより早く組めるようになる、という漠然とした目標で
始めたんですが、Javaは開発環境が充実している&慣れているので、
相当Hakellの方に利点がないと追いつくことも難しいというのが現状です。

ただ、Haskellには素早く組めるときには一瞬でできる感じがあって、この感触で全
部作れたら、
きっと早いだろうなあ、というのがあって捨てきれずといったところでしょうか。

まあ全般にたいしたプログラマーではない&基礎概念をまだ把握し切れていないの
で、
使いこなせていない感が強いです。

> どのようなことでも,遠慮なくどうぞ.

ありがとうございます。

--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.8/113 - Release Date: 2005/09/27


--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.8/113 - Release Date: 2005/09/27


--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.8/113 - Release Date: 2005/09/27



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