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


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

【Perl,Python,PHP】LL バトルロワイヤル 25【JavaScript】



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にシングルトンパターンは存在しないようだ。」
面接官「帰れよ。」


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の何をもってシンプルと言ってるのか分からない
自分が好き=シンプルなのか?

415 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:10:14.31 ]
>>413
Pythonのラムダって、あの式しか書けないやつですか?

416 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:10:46.27 ]
>>413
どっちかっつーと機能制限のせいだと思う、というか自分はそれがあるから内部関数のほうが多い
今は三項if式があるから昔よりマシになったけど、文が書けないってのは何気にキツいと思う

417 名前:uY ◆gXFLM6waxs mailto:sage [2012/08/17(金) 02:12:07.39 ]
なんでこのスレ今日はこんなにヒートアップしてんの
ちょっと落ち着けば?
img.pics.livedoor.com/011/c/6/c6a670a71f0ef9867635.gif
img.pics.livedoor.com/012/8/8/880651e544c143b0cbce.jpg

418 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:13:45.30 ]
CoffeeScript はプログラミング言語のひとつである。コードはJavaScript のコードに変換される
Ruby や Python、Haskell から影響を受けたシンタックスシュガーの導入により、JavaScript に比べ簡潔さと可読性を向上させた

ワロタ

419 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:16:05.29 ]
ラムダを多用ってどこの誰が多用してんの?



420 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:19:28.36 ]
最近の言語と言ってるが、最近の言語で言語仕様がシンプルなんてなくね?
JSがシンプルというのも甚だ疑問だけど、他の最近の言語だって全然シンプルじゃないだろ

421 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 02:20:53.14 ]
>>419
関数型では多用するけど、手続き型では代替手段を使うことのほうが多いよね
PerlやRubyはブロックだし、Pythonはforイテレータやリスト内包、ジェネレータ式や内部関数
強いて言えば無名関数リテラルでやるJSくらいじゃないか?当て嵌まるのって






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

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

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