トップページ > プログラム > 2014年11月20日 > wJ3BgpRF

書き込み順位&時間帯一覧

1 位/258 ID中時間01234567891011121314151617181920212223Total
書き込み数64000000000000000000000010



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
クロージャって何がいいの? [転載禁止]©2ch.net
Ruby 初心者スレッド Part 55

書き込みレス一覧

クロージャって何がいいの? [転載禁止]©2ch.net
157 :デフォルトの名無しさん[sage]:2014/11/20(木) 00:19:03.39 ID:wJ3BgpRF
>>154
>ここで言ってるwithは例外が起きた時にリソースを解放する機能を持ったもの。

わざわざ with という構文を追加して言語の意味論を複雑にしなくても、
もし汎用的な概念であるクロージャがあれば、同じ事を実現できるってことだよ

もし Python にもクロージャがあるなら、他の言語達と同様に
with 構文を使わなくてもリソースの自動解放を簡潔に表現できるハズだけど、
手続き型言語の Python では無理だろうね

それとも、書けるかな?
クロージャって何がいいの? [転載禁止]©2ch.net
159 :デフォルトの名無しさん[sage]:2014/11/20(木) 00:29:37.23 ID:wJ3BgpRF
>>158
>それを実行する関数つくれば、

もし Python が「世間一般のクロージャの要件(>>104)」を満たしていれば、
「関数をつくらなくても」クロージャだけで簡潔に書けるはず
つまり「関数をつくらなければ書けない」ということは、
Python が「世間一般のクロージャの要件」を満たしていないことを認めたってこと
Ruby 初心者スレッド Part 55
830 :デフォルトの名無しさん[sage]:2014/11/20(木) 00:35:02.06 ID:wJ3BgpRF
少なくとも
・オブジェクト指向プログラミング
・関数型プログラミング
を学び&それを実践したいのであれば、
数あるスクリプト言語の中でも Ruby が最良の選択

(もしS式に拒否反応が無ければ Scheme 等のLisp族でもいいんだけどね)
クロージャって何がいいの? [転載禁止]©2ch.net
162 :デフォルトの名無しさん[sage]:2014/11/20(木) 00:42:39.12 ID:wJ3BgpRF
>>161
「クロージャみたいなモノ」もしくは「クロージャもどき」

def make_f(x):
 return lambda(y): x * y

が返すのも同じ
クロージャって何がいいの? [転載禁止]©2ch.net
165 :デフォルトの名無しさん[sage]:2014/11/20(木) 00:47:27.27 ID:wJ3BgpRF
>>163
>>104
クロージャって何がいいの? [転載禁止]©2ch.net
167 :デフォルトの名無しさん[sage]:2014/11/20(木) 00:58:03.79 ID:wJ3BgpRF
>>164
いや、Python は関数を定義しなければ局所環境が作られないんだから、
>>31 の要件は満たしていないだろ
>>31 には「ラムダ式や無名関数で実現している」と書かれているんだけど、
日本語が不自由なんですか?

実際、もしも >>31 の定義を満たしているなら、
>>46 のゴチャゴチャしたコードは
(>>73 のようにわざわざ関数を定義しなくても)
>>83 のように「ラムダ式や無名関数で実現している」
簡潔なコードに書き直せるはずだ

さて、論よりコード、>>164 は書き直せるかな?
クロージャって何がいいの? [転載禁止]©2ch.net
170 :デフォルトの名無しさん[sage]:2014/11/20(木) 01:04:53.19 ID:wJ3BgpRF
>>166
それは def f(x): で関数を定義しているから、当たり前の話

「世間一般のクロージャ」であれば、わざわざ関数を定義しなくても
ラムダ式や無名関数と呼ばれる構文でクロージャを作れるんだよ
>>31 をよく読み直そうね
クロージャって何がいいの? [転載禁止]©2ch.net
173 :デフォルトの名無しさん[sage]:2014/11/20(木) 01:10:58.55 ID:wJ3BgpRF
>>169
>>31 にある「いくつかの言語では」という前置きは、
後から出てくる Smalltalk や Ruby のブロック構文を指すと
考えるのが自然じゃないかな?

さすがに Wikipedia のページ著者が
「ラムダ式や無名関数」と「関数定義」との違いも
分からないほどのお馬鹿さんだとは思えないしね
クロージャって何がいいの? [転載禁止]©2ch.net
175 :デフォルトの名無しさん[sage]:2014/11/20(木) 01:15:12.19 ID:wJ3BgpRF
>>171
クロージャだね

(define (make_f x)
 (lambda (x) (* x y))
)

が返すのもクロージャだね
クロージャって何がいいの? [転載禁止]©2ch.net
178 :デフォルトの名無しさん[sage]:2014/11/20(木) 01:28:21.39 ID:wJ3BgpRF
>>177
Wikipedia の記事が常に 100% 正しいと思っているのかな?

記事の冒頭にある >>31 のクロージャという用語の定義とは
矛盾していると思うけどね
(自分のクロージャという用語の定義は >>4 で書いた)

もし矛盾していないと反論したいのなら、論よりコードだ
>>46 のゴチャゴチャしたコードは
(>>73 のようにわざわざ関数を定義しなくても)
>>83 のようにラムダ式や無名関数だけで書き直せるはず

さて、>>177 は書き直せるかな?


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。