1 名前:uy [2012/08/11(土) 12:21:25.19 ] 面白かったのでコピペ 979 名前:uy[sage] 投稿日:2012/08/11(土) 11:53:55.80 面接官「特技はRubyとありますが?」 学生 「はい。Rubyでならなんでもかけます。」 面接官「ではシングルトンパターンを書いてください。」 学生 「存在しません?」 面接官「え、存在しない?」 学生 「はい。存在しません。Rubyはシングルトンパターンを言語でサポートしています。」 面接官「・・・で、その言語でサポートされた機能を使うとシングルトンパターンになるんですよね?」 学生 「はい。シングルトンパターンです。」 面接官「いや、あなたRubyでシングルトンパターンは存在しないといいましたよね。なぜシングルトンパターンになるんですか?」 学生 「でも、シングルトンパターンは存在しないんですよ。」 面接官「いや、存在しないとか問題じゃなくてですね・・・」 学生 「Rubyなら簡単にシングルトンパターン書けますよ。」 面接官「ふざけないでください。それに機能が用意されてるってことは存在するでしょ。だいたい・・・」 学生 「機能は用意されていますが言語でサポートしているんです。だから存在しません。」 面接官「聞いてません。帰って下さい。」 学生 「あれあれ?怒らせていいんですか?シングルトンパターン書きますよ。」 面接官「いいですよ。書いてください。Rubyでシングルトンパターンを。それで満足したら帰って下さい。」 学生 「運がよかったな。Rubyにシングルトンパターンは存在しないようだ。」 面接官「帰れよ。」
314 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:23:47.98 ] 関数型言語としてどれが素晴らしいかって、HaskellとかSMLが素晴らしんじゃないでしょうかw でも関数型言語スレって盛り上がらないんだよな。TIOBEのランキング見れば分かるけど そもそも利用者が少ない。LispはまだしもHaskellとかMLとかは、マイノリティすぎる 結局、関数型言語としての評価軸って対して価値がないのかなと思う まあノイジィマイノリティのノイジィ具合は全てのパラダイムの中で群を抜いてるだろうけど それに対応してRuby、Pythonその他の言語にも導入されてる機能もあるし 導入された分は使える範囲で使えればいいと思うし、それで足りないなら関数型言語を使うしかないけど そういう選択をする人が少ないのも事実で、関数型言語でなければならないという観点は間違ってる気がする
315 名前:153 mailto:sage [2012/08/16(木) 21:33:07.50 ] >>303 リスト内包表記(Haskell: >>197 )にせよラムダ式(SML: >>306 )を使うにしても、 関数型言語プログラマであれば「再利用されないコード断片」は 関数定義無しでも書けるのは「常識」なんだから、そんなルールはわざわざ書かなかった 今の議題は「LLにおける関数型プログラミングの適性比較」なんだよ
316 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:34:19.08 ] 「LLにおける関数型プログラミングの適性比較」というスレでやれば?
317 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:34:28.89 ] えーその議題いつ決まったのーーーー!!! さすがに突っ込ませてもらうわ。 とりあえず君は関数型言語の巣へ帰った方がよいね。
318 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:35:10.02 ] >関数型言語プログラマであれば (笑)
319 名前:uy [2012/08/16(木) 21:36:45.56 ] 関数型言語でスクレイピングしたいんですけど あ、やっぱあいいや
320 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:48:26.95 ] >>295 > I believe that the main reason > people keep arguing for anonymous blocks (and this will never stop) is > simply that there is **a certain segment of the programmer** population > that is used to solving a large variety of problems with anonymous > blocks and that **they don't want to learn how to solve each of those > cases using the existing tools in Python.** (強調引用者) どう考えても>>153 そのものです。本当にありがとうございました
321 名前:153 mailto:sage [2012/08/16(木) 21:49:45.82 ] >>312 では、議題(>>315 )に沿った「Pythonユーザなら誰でも書くコード」を提示しなさい >>272 氏がPythonにもクロージャは存在すると指摘してくれたので >>276 でコード例をリクエストしてレスを待っているんだけどな.... 残念ながら、今のところ具体的なPythonコードを書いてくれたのは>>211 一人だけだ 過去スレ19,20でも結局は一人だけだったし、もしかして同じ人かなあ....
322 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:51:22.33 ] 俺RubyもPythonもHaskellもOCamlも仕事で使った事在るけど こんなスレで関数型言語アピールとかアホとしか思えん 関数型言語が好きなら黙って使ってろっての
323 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:52:27.55 ] なんでお前に命令されなきゃいかんのか分からんし なんか前もお前の間違いを訂正したのは 「ああ、そうなんだ、ふうん。でも俺の主張は間違ってない。じゃあこのお題はどうよ?」 みたいな対応しかしなかったし、関わるだけ無駄。関数型云々について、いつまで続けるんだ? もう結論出して良いよ。それでLLの優劣なんて何も決まらんから
324 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:52:32.06 ] 覚えた言葉をすぐに使いたがる小学生。
325 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:53:32.53 ] >>321 まず議題が承認されてないじゃん というかPythonいけてねえって主張するあなたのほうに立証責任がある 「なんでPythonで(名前つき)関数定義するのがよろしくないのか」を示すべき
326 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:55:05.79 ] 315は関数型言語で遊ぼう!みたいな本が大好きな関数型マニアだってことは分かるけど このスレで何をしたいのかは理解できない
327 名前:デフォルトの名無しさん [2012/08/16(木) 21:57:21.87 ] このスレ住民は現実的な意見が多いな 関数型は効率というベクトルからは外れた趣味だもんな
328 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:02:23.59 ] Pythonディスりたければ、俺みたいに、 あの糞みたいな、ネスとスコープの仕様をつつけば良いのに。 あれだけは生粋のパイソニストでも擁護不可能だからね。 擁護しようものなら、 今になってnonlocal追加した事実に反してしまうしな。
329 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:02:35.37 ] というか、ある程度はそのプログラミング言語の用途とかが競合しないとさ
330 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:06:00.91 ] ガチでぶつかるのはPythonとRubyぐらいでしょう。 しかも外国VS国内みたくなってるから余計に。 他の言語は大体用途が被らないし、 その用途でのスタンダードを確立しているものばかりだからな。 shとJSで喧嘩するのは無理。
331 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:07:22.74 ] >>328 nonlocalの追加は、リストにする手間が省けたという意味では確かに改善だけど スコープ自体は問題なくね。だからこそnonlocalが要るんだし
332 名前:153 mailto:sage [2012/08/16(木) 22:08:05.65 ] >>311 >せめて>>297 を満たす御題くらい作れよ え、>>197 ,198,306の御題は>>297 を満たしているけど、何か? > (1)Pythonのlambdaじゃ書けなくて ==> わざわざ複数の引数を渡しているから、Pythonのlambdaじゃ書けない (タプルを使えば書けないことも無いかもしれないけど冗長になる) > (2)関数を定義したら冗長になってしまうほど短い ==> 1カキコ内に収まるほどのコードなので、十分に短い しかも再利用されないコード断片なのだから、関数定義が冗長なのは明らか (Pythonの無名関数(=ラムダ式)って、一体何のために存在してるの?) また、お題について不満があるなら、それを最初に(>>198 の直後に)主張しないとね 散々ゴネたあげく後出しでブーブー文句を言うのはカコワルイよ
333 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:08:32.79 ] >>328 nonlocal(酷い名前だ)を追加したPython3ではネストスコープの問題は無いの?
334 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:09:07.30 ] じゃあ前もって言うけど、今後二度とクソレスすんな
335 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:10:44.41 ] >>332 >> (2)関数を定義したら冗長になってしまうほど短い >>211 のコードは>>197 のHaskellや>>306 のSMLより簡潔だけど? ああ関数型言語は冗長なのか
336 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:11:12.57 ] 皆が153みたいに粘着してないんだから、後から文句言うなとか文句言ってる時点で頭おかしい 間違いは素直に認めろよ
337 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:13:45.93 ] 間違いを認めるなんて無理だろうから 目の前のPCを破壊して二度と書き込まないでほしい
338 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:15:45.76 ] >>330 RubyとPerlは? というかPerlが完全に空気化してるのは、負けたからか? まだそこそこ使われてるイメージだけどなあ
339 名前:153 mailto:sage [2012/08/16(木) 22:16:29.83 ] >>314 >関数型言語でなければならないという観点は間違ってる気がする ああ、これについては同感だね 現状のどの関数型言語も文字列、パターン、ハッシュの操作に難があるから、 現行LLであるPerl/Python/Rubyを置き換えるには無理があると思う ただし、関数型言語にも良い特性がある訳で、実際に(LLを含む)多くの言語に影響を与えている だから自分は「LLにおける関数型プログラミング」に注目している
340 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:18:23.40 ] >>331 意味わかんねー。問題があったからnonlocalが追加されたんだろ。 しかもnonlocalが有るんなら、代入のある無しでスコープが変わる糞仕様は要らないだろ。 互換性のために残っちゃってるけど。 代入が無ければネストスコープ。 代入が有ればローカルスコープ。 しかしnonlocalが有れば代入があってもネストスコープ。 はぁ、糞ややこしいな。 代入の有る無しと、nonlocalの有る無しの、 二箇所を確認しないといけないなんて。 直感的でも無いしな。 しかし、代入の有る無しでスコープ切り替わるってのは意味分からないよな。 代入は「代入」だろ。代入に別の意味持たせるなよ。
341 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:18:38.00 ] >>339 LLにおける関数型プログラミング toro.2ch.net/test/read.cgi/tech/1345123070/ お前一人が明らかに邪魔なので、こちらでどうぞ
342 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:21:13.16 ] >>340 いや互換性はもはやないよ。あと、代入するならnonlocalだよ
343 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:24:19.36 ] >>332 再利用しないものに名前を付けるのが冗長だというなら >>197 にあるh,b,fという一次変数も冗長で不要
344 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:24:22.12 ] >>333 ああ、問題残ってるよ。代入の有る無しでスコープが切り替わる問題が。 互換性のためか残っちゃってるけど、 nonlocal追加したんなら、思い切ってこの糞仕様は廃止すべきだったな。 nonlocal有りならネストスコープ、無しならローカルスコープ。 一貫してそれでよかったんだよ。シンプル、単純、分かりやすい。 スコープ調べるのに代入の有る無し調べるとか意味わかんねー。 折角nonlocal追加したのに、なぜに。 二箇所調べなきゃならなくなったから、状況はより悪化したともいえる。
345 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:25:04.92 ] >>340 shadowingの概念知らんの?
346 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:26:16.84 ] >>344 ちょっと待てよ。nonlocal追加以前はそもそも代入不可だろ
347 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:27:08.83 ] 代入と宣言の区別もつかんアホがスコープ批判か...
348 名前:uy [2012/08/16(木) 22:27:35.56 ] perlは終了 jsは用途が違う PHPはいわずもがな pythonは日本じゃ流行らない rubyですね
349 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:30:33.87 ] >>346 いや、代入できるよ。ローカルスコープの変数になるけどな。 代入があっても、nonlocalならネストスコープ。 nonlocal無くても、代入が無ければネストスコープ。 あー超ややこしいね。 単に、nonlocal有り/無しで、ネスト/ローカルが切り替わる 方が直感的で良いよなぁ。
350 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:31:24.90 ] >>349 いや、nonlocalを何のために使うのか理解してないでしょw
351 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:34:27.06 ] >>349 その側の変数には代入できない。それを可能にするのがnonlocal
352 名前:153 mailto:sage [2012/08/16(木) 22:34:31.89 ] >>335 え、単純なステップ数で比較しているの! こちらとしては「再利用されない(一度しか使われない)コード断片を わざわざ関数として定義するのは無駄(=冗長)」と言ってるだけだけど、これは非常識なのかな? というかPythonの無名関数(=ラムダ式)は、いったいぜんたい何の為に存在してるんだろう? ああPythonのラムダはやっぱり「まがい物」なのか
353 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:35:25.54 ] >>351 訂正:その側→外側 globalに似てて、globalとも違うから、いいネーミングだと思うけどなあ
354 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:37:12.96 ] >>350 その変数がネストスコープであることを示すためだ。 しかし、nonlocalが無くても、参照のみならネストスコープだ。 ここがまずおかしいね。普通、ローカル変数となるべきところだ。 そして、(代入無しで参照しているから)プログラムはエラーで落ちなければならない。 普通そういう動作が求められるところ。
355 名前:デフォルトの名無しさん [2012/08/16(木) 22:40:05.99 ] そんな基地外スコープの言語がつかわれてる理由ってなに
356 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:42:12.88 ] >>351 なぜnonlocal無しで代入は出来ないのに参照は出来るんだ? そこがまずおかしいと思わないと。しかも完全なリードオンリーならまだ使い道もあるが、 実際にはメンバ変数を変更したりは自由なんだからCのconstの代わりとしても役に立たない。 別に狙ったものでもなんでもなくて、代入で宣言を代用したことによる単なる文法上の不備でしかないからな。 しかし代入の有る無しでスコープの変わるカス仕様を擁護できるとはおめでたい。 そういう頭じゃないとPythonに惚れ込むのは無理なのか。
357 名前:uy [2012/08/16(木) 22:44:18.14 ] なんかpython使いたくなってきた スコープは基地外なほうが便利なこともあるんじゃない
358 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:44:18.55 ] 2.xは外側の変数を書き換えられなかったけど、3.xは明示すれば書き換えられるようになっただけじゃね なにを混乱するんだろう
359 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:45:56.65 ] >>356 局所変数を定義したら外側のスコープの 同名の変数は直接見えなくなる Cで書けばこういうことね int x = 0, y = 0; { int x = 1; printf("%d,%d\n", x, y); } printf("%d,%d\n", x, y); こんな簡単なことも分からない馬鹿って生きてる意味あるの?
360 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:47:51.21 ] >>352 Pythonのラムダ式は要らんね ただ再利用されなくても関数として定義するのは言語問わず無駄ではないよ…マシンには無駄かも知れないが コードを読む際には処理の区切りや、その処理の区切りにとって必要なデータは何なのか、などが明確になる
361 名前:uy [2012/08/16(木) 22:48:23.51 ] >>359 それはCのゴミカスコープ
362 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:51:18.10 ] >>359 だからそれがカス仕様だって言ってるんだ。 >局所変数を定義したら外側のスコープの同名の変数は直接見えなくなる それはごもっとも。しかしだ、問題はそこじゃない。 変数の宣言に代入を代用しているから、代入しようとすると宣言する羽目になって、 お前の言う、「局所変数を定義したら外側のスコープの同名の変数は直接見えなくなる」 に陥ってるんだ。だから変数の宣言と代入が別の構文なら、こういう問題は発生しない。 宣言せずに、代入だけすれば、その側のスコープの変数に代入できるからな。 そこがまずミスってるわけ。そんで今になってnonlocal追加。余計にカオス。 他の言語で見られるようなvar方式の方がましだったってわけ。
363 名前:153 mailto:sage [2012/08/16(木) 22:52:20.86 ] >>341 お、わざわざスレを立ててくれたんだね、ありがとう 早速、Python関連サイトへのリンク集をカキコしておいたよ では、このスレでは議題が「Pythonにおけるnonlocalの是非」へと移ったからみたいだから、 (このスレでは)しばらくROMにまわることにする
364 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:53:35.57 ] いや、そんなに混乱することコレ?w なんか本当に混乱して全く理解できない状態で説明してるんだよね
365 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:54:19.53 ] >>363 お前の引き出しの少なさに唖然とするわ というかお前Pythonのこと何も知らんくせにPythonのリンク貼るなカス
366 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:55:12.21 ] var: 局所変数を宣言するときに付ける nonlocal: 外側のスコープの変数へ代入するときに付ける 局所変数の宣言の方が沢山書くんだからvarの方が冗長 ていうかnonlocalが無ければ外側の変数に代入できないんだから 混乱するのはアホだけだ
367 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:55:34.09 ] >>363 良かったね^^ これで思う存分お前のやりたい議論が出来るね^^
368 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 22:58:26.10 ] 簡単に言えば、「何で代入したいだけなのに勝手に宣言しちゃうわけ?」ってこと。 代入と宣言はまったく別のものだろ。 代入は代入だし、宣言は動的型言語の場合スコープを決めるためのものだ。 一緒くたにしてしまって、使い分けできなくなってしまって不便になったものだから、 あとからnonlocal追加。塩と砂糖を混ぜておいて、後から塩だけ分離するようなものだ。 はじめから混ぜるな。あたりまえ。
369 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:00:16.56 ] いやだから、nonlocalの追加で解決したんだろ?w
370 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:00:51.21 ] >>366 自分で書く場合は混乱しない。問題はは他人のソースを読む時。 ある変数のスコープを調べたい時、nonlocalと代入の有る無しの両方を確認しないと スコープが確定しない。
371 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:03:05.53 ] そうかなあ、混乱するコード見せてよ
372 名前:uy [2012/08/16(木) 23:03:18.38 ] uyを分離するにはpythonの話題にすればいい だったら最初から混ぜるな!
373 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:03:35.02 ] >>370 > 自分で書く場合は混乱しない。問題はは他人のソースを読む時。 いや、お前明らかに混乱してたろww 面白い奴だな
374 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:06:00.64 ] >>369 解決していない。代入の有る無しでスコープが変わる糞仕様は残ったまま。 代入で宣言を代用する、アホな発想は残ったまま。 便利な万能調味料を作ろうとして、塩と砂糖を混ぜたのが今までのPython。 使い分けできなくなって困ったから、そこから塩だけ分離する機能をつけたのが新しいPython。 しかしだ、小学生でも言うぜ? はじめから混ぜなければ、あとで分離する必要は無いのにって。
375 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:07:31.61 ] 宣言するの面倒じゃん
376 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:09:13.91 ] 代入でスコープが変わるって何? 代入で宣言するから、宣言でスコープが決まるだけでしょ
377 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:10:17.73 ] >>374 だからお前がアホなのは分かったって
378 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:11:41.04 ] nonlocalも宣言だから、別に矛盾してないよなあ
379 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:13:36.05 ] >>375 なぜか知らないが、君がそう勘違いしているだけ。 たとえ宣言をしなくて良かったとしても、 どの道、初期化してからしか変数を使用できない。 さすがに初期化するの面倒じゃん、とは言えないでしょ。 初期化は必ず必要。だから、初期化するついでに宣言すればよい。 手間は変わらないということ。varが嫌なら、i @= 0とかでも良い。 何でも良い。普通の代入と宣言付き代入の区別さえ付けばよい。
380 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:15:09.84 ] >>379 i @= 0とかいくらなんでもキモすぎだろ。そういう言語があるの?
381 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:16:46.28 ] >>376 なんで代入で宣言するんだよ。宣言無しの普通の代入は? 代入と宣言は別のものだろ。代入は代入。宣言はスコープを決めるもの。 ぜんぜん動作が違う。なぜ両者を混ぜる?そしてなぜ後で分離する(nonlocal)? ナンセンスだろ。馬鹿げてるって分からない?
382 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:16:53.87 ] > i @= 0 Perlに倣ってシメジ代入演算子と命名しました
383 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:17:30.34 ] PythonはNoneにappendしたらリスト作ってほしい
384 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:18:27.99 ] リストとNoneを返す関数の返り値にappendするならいいけど それ以外の場合はろくなことにならない悪寒
385 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:18:54.59 ] >>381 便利だからだろ。それで必要な所だけで宣言するようにしたんだから お前の案よりエレガントじゃね
386 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:19:35.83 ] >>380 宣言が i := 0 って言語なら有る。 @=はキモいけど、今回あえてそう書いたのは、 プロポーショナルフォントだと「:」が潰れて:=と=の区別がつきにくく、 掲示板に投稿するのには向いて無いから。 でも実際なんでも良い。普通の代入と宣言付き代入の区別さえ付けば。
387 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:23:04.62 ] 動的言語を使わないほうが精神衛生上良いのでは…
388 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:26:50.76 ] Pythonのネストスコープに欠陥がある!なんて言うから楽しみだったのに 自分の好みを連呼するだけの馬鹿だと分かってガッカリ
389 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:29:09.85 ] のんろーかるってなんぞ?
390 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:29:37.78 ] nonlocal使った具体的なソースがみたい
391 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:30:33.43 ] さぁ、これでまたパイソニストの数が減ったかな。 ラムダは貧弱だし、スコープはおかしいし、 単純にラムダ多用が当たり前の今の風潮に向いて無い言語なんだよね。 ラムダはスコープが重要になってくるし、しかもそのラムダ自体が貧弱なのだから。
392 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:31:54.33 ] はい勝利宣言はいりました
393 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:35:12.23 ] こりゃラムダ
394 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:37:44.86 ] これだけは断言できる 今日一日で関数型言語を嫌う人間は確実に増えた
395 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:44:43.34 ] Pythonのリスト内包は見にくくて、Rubyの関数型の記述は見やすいの?
396 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 23:51:58.10 ] 仮にPythonのラムダが強化されて無名関数が作れるようになったとしても、 こんどは代入の有る無しでスコープが切り替わる変な仕様が牙をむいてくる。 ことラムダに関してはPythonは2重に詰んでいる。 逆にその辺を何故かうまくかいくぐったJSの先見の明には驚かされる。 シンプルで素直な言語仕様が生きたな。 Cにも通ずるものがある。
397 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:07:03.34 ] >>390 クロージャでよくある例として、関数が呼び出された回数を数えるカウンタ ここではデコレータで、カウントしたい関数をデコレートして実現してみた Python2.x:参照が読めるだけだからリストを使う ideone.com/aa0et Python3.x:nonlocalで宣言した外側の変数に代入できる ideone.com/8C3tB
398 名前:デフォルトの名無しさん [2012/08/17(金) 00:13:45.80 ] c = 0 def f(): nonlocal c c += 1 print(c) f() つかこれは動かないけどw メソッドの内部にはない変数はまた別ってこと?
399 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:15:21.58 ] それはnonlocalじゃなくてglobal。Python2.xから出来る
400 名前:デフォルトの名無しさん [2012/08/17(金) 00:19:40.50 ] www.python.jp/doc/release/tutorial/index.html チュートリアルにデコレータないんだけどなんなの
401 名前:uy [2012/08/17(金) 00:21:22.59 ] うえ ちょっと試したけどPythonきも これはrubyで余裕で勝てる
402 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:26:22.46 ] デコレータは使い方が色々あって重いし、なくても当面はなんとかなるからな チュートリアルに載ってないことなんてナンボでもあるべ
403 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:30:07.04 ] いちおー言っとくけど重いってのは学習のことね
404 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:37:20.38 ] ちなみにPythonスレに2タブのコードを貼ると掘られます
405 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:45:42.98 ] >>391 減るわけないじゃん。 >>385 を論破してみろよ
406 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:54:36.95 ] 代入で宣言を兼ねるのは問題が全く無いワケではないが、彼はそれについて全く説明できていないんだよなあ。 面白いから答え書かずに眺めておこう。
407 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:59:43.48 ] はいはい、頭良いフリはいいからROMってろよ
408 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 01:11:43.19 ] >>405 代入で宣言を代用する方式は、ネストスコープを持つ最近の言語には殆ど採用されて無い、 というか、俺は見たことが無い。優れた方式ならもっと採用されているはずだろ。
409 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 01:18:03.74 ] >>407 バカですが何か
410 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 01:35:29.44 ] >>408 そのレスだけでは詭弁でしかない
411 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 01:39:45.14 ] 採用されてれば優れてるのか Python自体はあちこちにそこそこ採用されてるからやっぱり優れた言語なんだな
412 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 01:59:31.43 ] >>410 どこが詭弁なんだよ。 Pythonが出来た時代にはこんなにラムダが多用されるようになるとは 夢にも思わなかったんだろうよ。 だから、インナー関数は殆ど使われないし、ネストスコープもそんなに現れない、 そういう前提で、代入で宣言を代用したんだろう。 ところが、世の中ラムダだらけ、スコープだらけになってしまった。 時代を読むのは難しいが、ネスケ社が片手間に作ったJSがその辺上手に切り抜けているから 言い訳は出来ないわ。やはり言語仕様はシンプルで素直なのが一番。 当時の常識で変に捻ると後々邪魔になる。
413 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:05:54.04 ] JSのどこがシンプルなんだよ。JSの本にもクセがあると書いてあるくらいなのに まず、Pythonでも普通にラムダは使うし、他の言語より使わないとしたらそれはリスト内包表記が便利だからだよ
414 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:08:22.62 ] JSの何をもってシンプルと言ってるのか分からない 自分が好き=シンプルなのか?