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