- 関数型プログラミング言語Haskell Part27_©2ch.net
34 :デフォルトの名無しさん[sage]:2015/01/12(月) 01:44:40.42 ID:JPDNTFYW - 質問がうまくできず、余計な推測の手間をかけてしまったようで申し訳なかったです。
再帰を陽に使っているという言い方が完全に間違っていました、すいません。 再帰を手続きっぽく使っているというべきでした。 たとえば、リストに対する分割統治アルゴリズムも再帰的ですが、 部分を解く計算が全体を解く計算と同じなので、 <全体の解> = <部分1の解> `合成する` <部分2の解> とか、 <全体の解> = <部分のどれかの解> などの構造でプログラムが書けるので非常に宣言的に見え、気持ちいいです。 ソースから何を解いているのかを読み取るのも比較的に楽ですし。 それに比べて >>15 の再帰の使い方は、いかにも C 言語で for ループを使っているところをHaskell に直訳しました的な感じで、 とても手続きっぽく見えて気持ち悪いです。 そういう再帰の使い方を裏に隠すのが foldl などの標準ライブラリ関数なので、 >>32 の解釈のとおりなのですが、そうすると今度は 上手くやらないと書かれたソースが技巧的になる傾向があり、 宣言的だけど意図が分かりにくいということになりかねません。 宣言的で読み解きやすいプログラムにはできないものか、という質問でした。 >>33 はい、参考にさせていただきます。
|