>>279
でれでは、ここまでの結論をまとめてみる
まず最初は。>>286 の評価結果から:
[Python:X]
Python の lambda 構文は式しか書けないという制限があるから、
クロージャ固有の局所環境を持つことができない
したがって、Python の lambda 構文は「関数型言語のクロージャ」ではない
[Ruby:X]
Ruby のブロックはオブジェクトであるから、
その評価にはメソッド Proc#call をコールしなければならない
したがって、Ruby のブロックは「関数型言語のクロージャ」ではない
[JavaScript:O]
JavaScript の関数リテラルは任意の書けるからクロージャ固有の局所環境を持てるし、
なおかつ引数に適用するだけで評価できる
したがって、JavaScript の関数リテラルは「関数型言語のクロージャ」である
結果として、最も忠実に「関数型言語のクロージャ」が実装されている(>>274)、と言える
続けて、この評価結果が現実のプログラミングに与える影響をまとめる
ここでは Apple 公式リファレンスに含まれる Swift クロージャのサンプルコードを「お題」とした(>>189)
・高階関数 map に与えるクロージャをインラインで書ける
[Python:X]
・インラインでは関数再帰を使った可読性の低いコードになってしまう(>>205)
・このため、一般には(インラインで書くのはあきらめて)関数定義を使わざるをえない
[Ruby & JavaScript:O]
・インラインで自然な while ループを使った(ふつうのプログラマにとって)分かりやすいコードが書ける
・参照透明性のある関数型プログラミングで書ける
[Python:X] 関数再帰で書けるが、可読性の低いコードになってしまう(>>205)
[Ruby:O] (関数再帰の代わりに)組み込みの高階関数風メソッドを使うことで、可読性の高いコードが書ける(>>264)
[JavaScript:?] (書けるか否か、現時点では不明)
探検
クロージャって何がいいの? [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
288デフォルトの名無しさん
2014/12/17(水) 21:39:32.52ID:JUumI3zm■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- 【実況】博衣こよりのえちえち朝こよ🧪
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
