自己レスになりますが、>>242 では:
> (Python だけでなく、この「お題(>>189)」は Ruby であっても再帰を使えば同じく分かりにくいコードになる)
とカキコしました
で、後から考え直して「手続き型のループ&破壊的代入」ではなく、しかも「関数再帰」も使わずに、
参照透明性がある関数型プログラミングのコードを考えてみました
http://ideone.com/UrfbuL
ポイントは「反復に組み込みメソッド loop」を「ブロック脱出に引数付のbreak文」を使った2点です
なおメソッド loop は一般に loop do .... end という手続き型のスタイルで書かれることが多いために
ループ構文の一種と誤解されがちですが、(lambda を構文糖であると >>254 が 勘違いしたように....)
loop はメソッドですので(コードで示したように) inject へチェーンさせることができます
また「参照透明性はあっても、手続き型の制御構造であるbreak文の利用は反則ではないか?」という
指摘を予測して、
同じスタイルで(break文の代わりに)組み込みメソッド catch と throw を使ったコードも書きました
http://ideone.com/SaCAFi
ただし、この catch/throw は大域脱出のために用意されたメソッドですから、
今回の「お題」のように単一ブロックを脱出するだけならbreak文を使うのが素直だと考えます
ついでに(catch/throw の代わりに)Scheme 由来の継続(continuation)を使ったコードも書きました
http://ideone.com/5t1VEq
探検
クロージャって何がいいの? [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
264デフォルトの名無しさん
2014/12/16(火) 00:31:08.98ID:IiuX/rSM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 人間の髪の毛は押し出されるのではなく「引っ張られる」ことで成長する [少考さん★]
- 【原因は日本】元外交官ら高市首相答弁の撤回要求 「被害者のように振る舞っても事態は打開されない」… [BFU★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか [どどん★]
- (社説)スパイ防止法の策定 民主社会の基盤を崩さないか:朝日新聞 [少考さん★]
- グリコが「ポッキー」など600万個自主回収 チョコに香辛料の香り [少考さん★]
- 【国内総生産】実質GDP、年2.3%減に下方修正 設備投資落ち込み 7~9月期改定値 [ぐれ★]
- バカウヨ高市早苗自民党は戦争回避の為の外交努力の一切を放棄しているよね 中国父さんのミサイル絨毯爆撃で死にたくないよおお😭 [817148728]
- 愛国者「日本が好きで何が悪いの?」 [834922174]
- 【雑談】暇人集会所part42
- 地方創生☆チクワクティクスでひなビタお🏡を萌え起こしめう!
- 高市「減反します」→叩かれたため「多様なコメの増産を進める!」と言い始める😮 [931948549]
- 元外交官や大学教授「原因は高市が作った。発言を撤回せよ」記者会見を開く [931948549]
