shelarcy です。

On Thu, 24 Apr 2003 09:30:20 +0900, Shinya Hayakawa 
<tetryl / tokyoprogrammer.com> wrote:
> ということは普通に関数を定義する事を敢えて
> 特殊化した関数を定義すると言われたのでしょうか。
> -- すみません、重箱の隅をつつくようで

そうです。
私は私で C++ の考え方に毒されているようです……。


>> > カリー化した関数を定義するだけなら関数型でない言語でも可能ですよね。
>> > それだと関数型言語のメリットとは単なる記述性という事に
>> > なってしまわないでしょうか。
>>
>> ある意味ではそうです。
>> ただし、命令型の言語では複数の種類に分かれてしまうものを、関数型では
>> 一つにまとめてしまうことができるので、そこに威力があると思うのですが……
>
> "なぜ関数プログラミングは重要か" では逆に、細かく分割できるのが
> 関数型のメリットだと書いてありました。

いえ、これは syntax を変えなくていいという方の意味です。
それができるからこそ、塊ごとにまとめたり、細かく分割できたりするわけで。
まとめられることと分割できる事は、コインの両面のような関係だと思ってください。


> Refactoring といえば、ここの draft が参考になりそうです。
> http://www.cs.kent.ac.uk/projects/refactor-fp/
> Wiki も初心者にはありがたい情報が多いです。
> http://www.haskell.org/hawiki/
> -- 最近あたらしくなったんですよね

「ここのメーリングリストのアーカイブ早くできないかな?」と思っていたり……


>> ......なんというか関数型言語の場合、グループに注目するのが重要だと思います。そこにパターンが見出せてなおかつ記述が冗長にならなければ低レベル関数を 
>>
>>
>> 書いて高階化すればいいし、そうでなければ面倒でもいちいち書いていくと。
>> (そういうのが念頭にあったので、強制的にVisitorなオブジェクトのようなものって言ったわけですが)
>
> これは関数型言語に限らない一般的な手法ですよね?
> -- 実際よくやります

そうです。
ただ関数言語の方が Refactoring を中心として展開していく時の記述性が高い為、
やりやすいと思います。
(Refactoring って関数言語っぽいやりかただな、という意見もありました。)


> あれから調べて、以下の文書も参考になりそうでした。
>
> ・"Structuring Graphical Paradigms in TkGofer"
> http://www.cs.chalmers.se/~koen/Papers/tkgofer.ps
> ・"A Functional Analysis and Design Methodology"
> http://www.cs.ukc.ac.uk/pubs/2001/1152/index.html
>
> "Object-Oriented Style Overloading for Haskell" の例にもあった通り
> オブジェクト指向言語での class を単純に Haskell の class に当てはめた
> デザインも場合によってはアリかなと思いました。
> -- もちろん Haskell では instance も定義する必要があります
>
> ここら辺はもう経験を積んで判断していくしか無いですよね。
> というわけで、まずは仕事で使っているライブラリを
> 少しずつ Haskell に移植してます。
> -- 何をするにも IO が付きまとう..

できたら公開していただけるとうれしいです。

> 引き続き面白そうな情報がありましたら教えて頂けたらと思います。


Clean について知るのもいいかもしれません。
やたら導入しようとすると言語が複雑化してしまうので、どれもが導入
されるわけではありませんし、ObjectIO のように進展が遅いケースも
ありますが……
(インターフェース変わっているのにドキュメントないし……)

魅力的なのは Dynamics かな?
まだ完成してないようですが……

Clean Version 2.0 言語報告 【第8章】ダイナミック
http://sky.zero.ad.jp/~zaa54437/programming/clean/LanguageReport20/Chap8.html


-- 
shelarcy <shelarcy / capella.freemail.ne.jp>
http://page.freett.com/shelarcy/ 

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