- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
10 :デフォルトの名無しさん[sage]:2014/12/11(木) 20:36:27.72 ID:GpAyUabF - >>9
何を言いたいのかよく分からんが、>>7 で指摘されてた Ruby 1.8 の 問題(バグ)は結論が出て対策を終えている ・Ruby 2.0 ブロックローカル変数 -- Matzにっき(2005-03-09) http://www.rubyist.net/~matz/20050309.html#p03 この記事では 2.0 となっているが、実際には 1.9 で対策を終えた ・ブロックパラメータ(仮引数)に関する変更 -- 第3回 Ruby1.9の新機能ひとめぐり(中編) http://gihyo.jp/dev/serial/01/ruby/0003 Ruby 1.9 以降でブロックローカル変数に関する話題は記憶にないんだけど、 > みんなを納得させるほどの「結論」じゃない と主張する根拠(ソース)は何よ?
|
- クロージャって何がいいの? [転載禁止]©2ch.net
195 :デフォルトの名無しさん[sage]:2014/12/11(木) 21:30:20.83 ID:GpAyUabF - >>191
Swift スレの質問「Python が Swift や Ruby より劣ってるのは何か」に答えただけ で、具体的に反論できないから罵倒を始めて Swift スレが荒れそうだったから、 こちらへ移動してきた >>192 >>4 の定義において、局所環境やラムダ式は(クロージャという概念の構成要素であるけど)、 一般の言語だと直接的に対応する具象構文として存在していない(自分は知らない) その書籍は読んでいないけど、おそらく Standard ML では "fn" <match> という具象構文を 「関数(function)」または「関数式(function expression)」と呼んでいると思う で >>4 だと、その具象構文 "fn" <match> はクロージャに対応する またクロージャ(日本語では「閉包」)という用語は馴染みづらいので、 クロージャの具象構文を指して(便宜的に)無名関数/匿名関数/ラムダ関数/ラムダ式/関数式 ...etc と 別名で呼ばれることがある: ・Standard ML では、単純に「関数」や「関数式」と呼ぶ ・JavaScript では、"ECMAScript Specification" では(SML と同様に)「FunctionExpression」と呼ばれ、 サイ本では「関数リテラル」と呼ばれている ・13 関数定義 (Function Definition) -- Under Translation of ECMA-262 3rd Edition http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/13_Function_Definition.html ・Python では、その言語リファレンスで「ラムダ式」と呼ばれている: ・6. 式 (expression) ― Python 3.4.2 ドキュメント http://docs.python.jp/3.4/reference/expressions.html#lambda
|
- くだすれPython(超初心者用) その25©2ch.net
152 :デフォルトの名無しさん[sage]:2014/12/11(木) 21:34:38.15 ID:GpAyUabF - >>147
ここは言語スレだから、Webプログラミングについては WebProg板にある以下のスレで質問したほうがいいと思う ・【Python】Python Webフレームワーク総合スレ http://kanae.2ch.net/test/read.cgi/php/1329996601/
|
- クロージャって何がいいの? [転載禁止]©2ch.net
197 :デフォルトの名無しさん[sage]:2014/12/11(木) 22:44:15.05 ID:GpAyUabF - 調べてみると、Python のラムダ式で任意の文が書けないという問題(>>189)は、
過去に何度もネット上で話題になっていたようだね: ・Is it possible to have multiple statements in a python lambda expression? - Stack Overflow (May 14 '09) http://stackoverflow.com/questions/862412/is-it-possible-to-have-multiple-statements-in-a-python-lambda-expression ・syntax - No Multiline Lambda in Python: Why not? - Stack Overflow (Aug 5 '09) http://stackoverflow.com/questions/1233448/no-multiline-lambda-in-python-why-not ・Why doesn't Python allow multi-line lambdas? - Programmers Stack Exchange (Aug 7 '11) http://programmers.stackexchange.com/questions/99243/why-doesnt-python-allow-multi-line-lambdas そして、この問題を解決すべく数多くの提案が出された: ・AlternateLambdaSyntax - Python Wiki https://wiki.python.org/moin/AlternateLambdaSyntax それら提案の中には、Ruby のブロックを真似しよう(similar to Ruby's blocks)、というものまであった ・[Python-ideas] Proposal for function expressions - Grokbase http://grokbase.com/t/python/python-ideas/097ccjz2c3/proposal-for-function-expressions しかし残念ながら、これ以上続けても収束しそうもないから議論は打ち切り、とGuido氏が宣言(強権発動?)して終わった ・[Python-Dev] Let's just *keep* lambda https://mail.python.org/pipermail/python-dev/2006-February/060415.html この顛末をGuido氏は「複数行のラムダは解けないパズル(unsolvable puzzle)」と語っている ・Language Design Is Not Just Solving Puzzles http://www.artima.com/weblogs/viewpost.jsp?thread=147358 まさに「みんなを納得させるほどの「結論」じゃない」というのは、こういう状況を指しているんだろね.... http://peace.2ch.net/test/read.cgi/tech/1417333026/9
|
- クロージャって何がいいの? [転載禁止]©2ch.net
199 :デフォルトの名無しさん[sage]:2014/12/11(木) 23:02:23.22 ID:GpAyUabF - >>196
ではクロージャ定義の引用元ソースを示そうね 答えは書籍「計算機プログラムの構造と解釈」、いわゆるSICP本だ その中の節「3.2.1 評価の規則」に手続きオブジェクトが、いわゆるクロージャに対応する http://sicp.iijlab.net/fulltext/x321.html そしてクロージャを視覚化したのが、 このページの図3.2にあるオタマジャクシの卵が2つ並んだ図形になる 単純な話だと思うけど、難しいかな?
|
- クロージャって何がいいの? [転載禁止]©2ch.net
200 :デフォルトの名無しさん[sage]:2014/12/11(木) 23:27:50.83 ID:GpAyUabF - >>198
関数を宣言せずに書くという制約の元ですから、とてもPythonらしいコードだと思います しかもループの代わりに関数再帰を使っているのですから、より関数型プログラミングらしいとも言えます ただし、元々 Swift で書かれていたサンプルコードを各 LL へと書き直しているのですから、 もし以下の点を改善できれば(Pythonらしさという意味では)完璧でしょう: ・中間変数 f を宣言せず、リスト内包式の中にラムダ式をインラインで書く ・Swift のコードは辞書を使っているのですから、それを(勝手に)配列 digits へ改変せず、 Python でも(Ruby や JavaScript と同様に)辞書を使って書く
|