[表示 : 全て 最新50 1-99 101- 201- 301- 2ch.scのread.cgiへ]
Update time : 06/18 19:36 / Filesize : 147 KB / Number-of Response : 385
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

クロージャって何がいいの?



291 名前:デフォルトの名無しさん mailto:sage [2014/12/17(水) 21:39:32.52 ID:JUumI3zm.net]
>>282
でれでは、ここまでの結論をまとめてみる
まず最初は。>>289 の評価結果から:
[Python:X]
  Python の lambda 構文は式しか書けないという制限があるから、
  クロージャ固有の局所環境を持つことができない
  したがって、Python の lambda 構文は「関数型言語のクロージャ」ではない
[Ruby:X]
  Ruby のブロックはオブジェクトであるから、
  その評価にはメソッド Proc#call をコールしなければならない
  したがって、Ruby のブロックは「関数型言語のクロージャ」ではない
[JavaScript:O]
  JavaScript の関数リテラルは任意の書けるからクロージャ固有の局所環境を持てるし、
  なおかつ引数に適用するだけで評価できる
  したがって、JavaScript の関数リテラルは「関数型言語のクロージャ」である
  結果として、最も忠実に「関数型言語のクロージャ」が実装されている(>>277)、と言える

続けて、この評価結果が現実のプログラミングに与える影響をまとめる
ここでは Apple 公式リファレンスに含まれる Swift クロージャのサンプルコードを「お題」とした(>>191)
・高階関数 map に与えるクロージャをインラインで書ける
  [Python:X]
  ・インラインでは関数再帰を使った可読性の低いコードになってしまう(>>208)
  ・このため、一般には(インラインで書くのはあきらめて)関数定義を使わざるをえない
  [Ruby & JavaScript:O]
  ・インラインで自然な while ループを使った(ふつうのプログラマにとって)分かりやすいコードが書ける
・参照透明性のある関数型プログラミングで書ける
  [Python:X] 関数再帰で書けるが、可読性の低いコードになってしまう(>>208)
  [Ruby:O] (関数再帰の代わりに)組み込みの高階関数風メソッドを使うことで、可読性の高いコードが書ける(>>267)
  [JavaScript:?] (書けるか否か、現時点では不明)






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<147KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef