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にシングルトンパターンは存在しないようだ。」 面接官「帰れよ。」
237 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 11:05:52.40 ] >>235 Rubyは関数内関数を素直に定義できないじゃん Proc と lambda の違いとかキモイし どさくさにまぎれて関数型言語と一緒にすんなよ
238 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 11:45:22.78 ] phpでの話なんですが教えて下さい あるアドレスに下記の様にHTTPヘッダー関数で移動すると返ってくる内容がブラウザに表示されるのですが header("Location: {$add}") ; file関数、fgets関数等で下記の様に読み込むと中身がカラッポで入っていません $data = '' ; if ($fp = @fopen($add, "r")) { while (!feof($fp)) $data .= @mb_convert_encoding(fgets($fp, 1024), "EUC-JP", "auto"); fclose($fp); } $data = htmlspecialchars($data); file関数、fgets関数等で読み込んで中身を得るにはどうしたら良いでしょうのでか 教えて頂ける様お願いします
239 名前:238 mailto:sage [2012/08/16(木) 12:26:57.50 ] エラー抑制を外してみました if ($fp = @fopen($add, "r")) { ↓ if ($fp = fopen($add, "r")) { そしたら次の様なワーニングが出てきました 『 Warning: fopen(アドレス) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in 動いてるスクリプト on line 374 』 どうもアクセス相手側から拒否されている様です しかしヘッダー関数では取得できる様なのでどうにかしてfile関数等でデータを取り込みたいのですが どうしたら良いかご存知のかたいらっしゃったら教えて頂ける様お願いします
240 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 12:30:36.27 ] >>239 WebProg kohada.2ch.net/php/
241 名前:238 mailto:sage [2012/08/16(木) 12:32:19.66 ] >>240 thx
242 名前:uy [2012/08/16(木) 14:10:29.16 ] rubyは[]でかけるLISPとしても使えるんじゃなかった? メソッド揃えば完全変換できるかもよ procのlambda違いは有りなんだよ rubyは同じに見えて微妙に違う動作をするメソッドが数多く存在する それだけ細かい調整が標準ライブラリで効くってこと
243 名前:153 mailto:sage [2012/08/16(木) 14:13:16.73 ] >>237 >Rubyは関数内関数を素直に定義できないじゃん エッ!、Rubyは普通に関数内関数を定義できるよ??? 以前(1.8)は関数内関数のスコープに問題があったけど、今(1.9)では解消されたし ・メソッド定義のネスト - Ruby 1.9.3 リファレンスマニュアル doc.ruby-lang.org/ja/1.9.3/doc/spec=2fdef.html#nest_method というか、OOPLであるRubyでは、プライベートメソッドとして定義するのが一般的で、 関数内関数はまず目にすることはない しかも(>>211 のPyhtonのような)他LLでは関数定義を「普通」に使うけど、 Rubyならブロックがあるから一度しか適用しない関数は式の中に埋め込むのが「普通」 つまり、(関数内関数を多用せざるをえない他LLと違って)関数内関数を使う頻度は少ない >Proc と lambda の違いとかキモイし 確かにProcとlambdaの微妙な差異は分かりづらいよね でもRubyにはブロック構文があるから、(Procやlambdaのような)明示的な無名関数宣言を 使う頻度は比較的少ないし、使うケースでもどちらか一方を使えば済むことが多い また、言語の微妙な弱点を避けて、良い点を引き出すことに注力することが (Rubyに限らず)中級プログラマのたしなみの一つだと考える >どさくさにまぎれて関数型言語と一緒にすんなよ え、一度も「Rubyは関数型言語である」とは言ってないけど.....??? 「関数型言語風プログラミングには(他LLよりも)Rubyは明らかに優れている」と主張している
244 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 14:25:57.61 ] >>243 > エッ!、Rubyは普通に関数内関数を定義できるよ??? はあ?じゃあ何で関数内関数が外から見えてんだよ ideone.com/4J057
245 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 14:42:18.11 ] > つまり、(関数内関数を多用せざるをえない他LLと違って)関数内関数を使う頻度は少ない 関数型言語でも関数内関数を多用するけど...? 「関数型言語風プログラミング」って何? それってただの「Ruby風プログラミング」なんじゃないの?
246 名前:uy mailto:sage [2012/08/16(木) 14:43:56.36 ] rubyの仕組みがなんにもわかってないんだな それは結局selfが省略されているに過ぎない rubyはすべてがオブジェクトであり、インスタンスは特異メソッドをもつ事が出来る self.define_singleton_method :uy do p :uy end お前らの大好きなシングルトン でもこの設計はゴミカスだな 俺様個人の意見を言わせてもらうならdef内のdefは使わないほうがいいよ 普通にlambdaで ->{ } 書いたほうが短いんだからそっち使えばいいじゃん
247 名前:uy mailto:sage [2012/08/16(木) 14:48:03.05 ] >>246 すいません、思いっきり間違っていました忘れてください 旅にでます
248 名前:153 mailto:sage [2012/08/16(木) 14:50:55.63 ] >>244 わざわざideon上のコードを引用しなくても、Rubyの振る舞いは>>243 で示した リファレンスマニュアル「普通のメソッド定義式と同じ」の通りだよ??? 確かに、理想的には内側のメソッドが外部から隠蔽されたほうが望ましいことは認める これが>>211 のPythonコードのように、関数定義を多用するのが「普通」、 あるいは関数定義を多用「しなければならない」言語であれば、致命的な欠陥になる でも>>243 で述べたように、Rubyでは関数内関数の必要性がほとんど存在していないんだ もしも可能であるならば、ブロックやプライベートメソッド定義では読みづらかったり 冗長だったりするけど、関数内関数であれば素直に表現できるコード例を示してほしいなあ...
249 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 14:57:03.42 ] rubyはそこら中が関数といえば関数だからね do 〜 endって、でてきたらそれ全部関数だよ
250 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 15:03:34.35 ] だから関数型言語では関数内関数を多用するって言ってるのに... 関数型言語と違うスタイルなんだから「関数型言語風プログラミング」とか言うなよ
251 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 15:07:46.32 ] > 確かに、理想的には内側のメソッドが外部から隠蔽されたほうが望ましいことは認める 理想的にはじゃなく、ここが一番大事なところ
252 名前:uy [2012/08/16(木) 15:08:18.16 ] proc Proc.new lambda ->{ } def define_method define_singleton_method Module.new / Class.new / Struct.new こんくらいかな?メソッド内で関数のようなものを定義する方法 動作違うものが、これだけあるんだから動作調べて好きなの使えよ? defしか使えないバカなの?
253 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 15:23:14.80 ] >>248 > もしも可能であるならば、ブロックやプライベートメソッド定義では読みづらかったり > 冗長だったりするけど、関数内関数であれば素直に表現できるコード例を示してほしいなあ... なんだ、読みづらさや冗長さの観点で批判してたのか?関数型うんぬんは関係なく? じゃあ>>198 に比べて>>211 は読みづらくて冗長だからダメって言いたいんだな? そういうことは最初から言えよ
254 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 15:35:35.20 ] はよ旅立て。
255 名前:153 mailto:sage [2012/08/16(木) 15:41:10.73 ] >>245 >関数型言語でも関数内関数を多用するけど...? うん、関数型言語では関数内関数でプログラムを構築していくのが普通だね でもRubyはオブジェクト指向言語であり(>>243 の最後で書いたように)関数型言語ではないから、 モジュールやクラスでプログラムを構築するのが普通なんだ >「関数型言語風プログラミング」って何? 「(破壊的代入を含む)副作用を避けた参照透明性のあるプログラミング」(>>181 も参照) これは関数型言語のパラダイムと同じ もちろん(関数内関数ではない)Rubyでは、入出力や効率(性能や資源)といった理由から 完全に参照透明性のあるコードは書けないけど、それでも副作用を極力避けたり、 参照透明性のある部分とない部分を意識的に使い分ける、あるいは副作用のあるコードを隠蔽する 現実に実用的なテキスト処理プログム開発で試したところ(全体で約20Kstep)、 8割は参照透明性のあるコードで実装することが可能だった 残る2割の部分は、トップレベルの(入出力を含む)メイン処理モジュール群と 最下層の副作用をカプセル化(隠蔽)した内部ライブラリ群になる
256 名前:avacript [2012/08/16(木) 16:27:56.11 ] 関数型扱えない言語は終わってるよな rubyとか
257 名前:uy [2012/08/16(木) 16:51:25.73 ] rubyは関数型プログラミングも出来て便利だよな
258 名前:デフォルトの名無しさん [2012/08/16(木) 16:55:24.10 ] でもOSやミドルウエア、あるいはビジネスアプリにいたるまで 日本製ソフトのシェアはゼロに等しいよね。
259 名前:153 mailto:sage [2012/08/16(木) 16:57:54.51 ] >>250 >関数型言語と違うスタイルなんだから「関数型言語風プログラミング」とか言うなよ うん、ググってみたら確かに「関数型言語風プログラミング」は風変わりだった では、一般的な「関数型プログラミング(functional programing)」と改めよう
260 名前:153 mailto:sage [2012/08/16(木) 17:09:48.97 ] >>251 >理想的にはじゃなく、ここが一番大事なところ そう、クロージャやまともなラムダ式の無いPythonのような手続き言語における 関数型プログラミングでは、関数内関数こそが一番大事だよね Rubyはというと、(>>248 で書いたように)OOPLでブロックがあるからそれほど大事じゃないけど....
261 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 17:15:09.50 ] ラムダの文法を def 1; end にして、 メソッド定義は @method = def 1; end こんな感じの文法でよかったんだよ。 func = def 1; end こう書けばfuncはローカル変数だから外から見えないし。 同じようなものが一杯ありすぎる。 C++みたいに厳しいパフォーマンスが求められるってわけでも無いのにさ。 こんな行き当たりばったりな言語を良しとしている人は、 さぞプログラムも行き当たりばったり何だろうな。 かといって、ラムダの弱いPythonは土俵にすら立ててないのだが。 普及しててまともなLLって無いのかね。 もしJSにブロックスコープがあったなら、かなり良い言語になりえたんだがな。
262 名前:uy [2012/08/16(木) 17:42:47.29 ] >>261 おいバカ これ lambda ↓ ->{ } これlambda
263 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 17:43:38.98 ] ラムダしか知らないのかよお前はw
264 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 17:48:13.46 ] 旧世代的なラムダ脳にはリスト内包表記、イテレータ、ジェネレータ、デコレータを上手く使うPythonicなコードは理解出来ない なんとかラムダで書こうとするのは、どの言語でもCみたいなコードを書く奴と何も変わらん
265 名前:153 mailto:sage [2012/08/16(木) 17:59:30.07 ] >>261 >ラムダの文法を def 1; end にして、 ....(以下、省略) 構文の簡潔さという意味では、>>83 で紹介したSML(Standard ML)が理想に近いのではないかと 【ラムダ式】 fn hoge x y = <expr> 【条件分岐式】 if <expr1> then <expr2> else <expr3> 【多分岐式】 case <expr> of <pat1> => <expr1> | <pat2> => <expr2> | .... 【代入(束縛)】 val x = <expr> 【関数定義】 fun fuga x y = <expr> 【局所宣言式】 let val x = <expr> fun fuga x y = <expr> in <expr> 【モジュール定義】structure bar = struct <declarations> end 構文要素が必ず予約語で始まっていることがポイントになる また ;(セミコロン)は演算子であり、式「a ; b」は(aを捨てて) b の評価値を返すという意味になる 結果として言語仕様はコンパクトにまとまっているので習得が容易であり、 しかも言語全体の公式な形式的定義が存在するという特異な存在となっている ・Amazon.co.jp: The Definition of Standard ML: 洋書 www.amazon.co.jp/The-Definition-Standard-Robin-Milner/dp/0262631814/ >もしJSにブロックスコープがあったなら、かなり良い言語になりえたんだがな。 これは同感だね さらに条件分岐(if や switch)が文(statement)ではなく式(expression)であることも大切だと思う
266 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 18:07:02.49 ] そう思ってしまうのはクロージャがないC脳だから。 内から外へのスコープを区切るものは関数しかない、という単純さが損なわれる。 クロージャがあるからそれだけでも既にややこしくなってるのに。
267 名前:153 mailto:sage [2012/08/16(木) 18:11:28.09 ] >>264 論よりコード
268 名前:デフォルトの名無しさん [2012/08/16(木) 18:35:16.39 ] つまり、日本国はこの町並みを維持できる限り安泰ということだから、 大声張り上げて街中をデモ行進する人は宇宙空間にでも行って欲しい。
269 名前:153 mailto:sage [2012/08/16(木) 18:39:03.55 ] >>265 のカキコの中で、最後の「>もしJSにブロックスコープがあったなら、」以降を取り消す ブロックスコープをスコープと早合点していた
270 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 18:42:06.27 ] >>267 Closures in Python (part 1) ivan.truemesh.com/archives/000392.html >(ie. use a "list comprehension" - I think it reads a bit easier than using the map/lambda).
271 名前:153 mailto:sage [2012/08/16(木) 18:53:18.70 ] >>270 リンク先を眺めたけど、これらの例というのは(説明も何も無いから) RubyでもPyhtonでも同レベルで簡潔に書けるコードに見える これらの例について、いかにPythonが優れているかを「>>270 自身の言葉で」語って欲しい あるいは>>197 ,198のように、明らかにPythonが優位性であることが分かる例を希望する これじゃバトルにならんのだよ....
272 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 18:54:43.69 ] >>271 別にRubyが劣ってるなんて言ってないよ 馬鹿が譫言のようにクロージャクロージャと連呼してたから ああ、こいつはPythonのことをあまり知らないんだなあ、と思っただけ
273 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 18:55:24.50 ] Pythonが優位であることが分かる例か。シェアだな。
274 名前:153 mailto:sage [2012/08/16(木) 18:56:07.05 ] >>269 (>>265 )を再訂正 ....orz X: スコープと早合点していた O: ブロックと早合点していた
275 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 18:56:16.68 ] なお>>197 ,198でPythonが明らに劣勢であることを示せてると思ってる所にも同情する
276 名前:153 mailto:sage [2012/08/16(木) 19:00:35.26 ] >>272 では、そのPythonのクロージャとやらを使って、>>211 を書き直して欲しい Pythonにはクロージャがあるから、関数定義無しに書けるよね?
277 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:01:46.12 ] >>273 それに伴うライブラリの充実とかコミュニティの活発さはあるね
278 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:02:19.29 ] そもそも関数定義無しに書けなきゃダメって 勝手にルール作ってるところがおかしい
279 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:02:23.31 ] なぜ関数を定義したらいけないのか理解できない
280 名前:デフォルトの名無しさん [2012/08/16(木) 19:05:32.80 ] 領空侵犯機 ロシア約68%、中国約25%、その他約7%
281 名前:153 mailto:sage [2012/08/16(木) 19:09:44.52 ] >>275 独り言かな?
282 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:09:59.70 ] 153はダブルスタンダードすぎる
283 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:12:19.57 ] >>279 そりゃ明らかに面倒だろ。 いまどき、あのC++にすら無名関数やラムダがあるのに。 あの保守的なC++が取り入れたんだよ? しかも文法を [&](int i)-> int { return i; } って糞キモくしてまで取り入れた。 今までのC風の関数のスタイルを捨ててまで、取り入れたんだよ。 今までになかったこと。それぐらい無名関数やラムダは求まれた。 int func( int i ){ return i; } これが auto func = []( int i ) -> int { return i; } こんなになっちゃったんだよ。こんなに見た目が変わったんだよ。 それを受け入れたんだよ、あのC++er達が。その意味を考えろ。
284 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:15:38.78 ] >>283 いや上の例を見ても明らかとは思えないけど 別にC++erだって全ての関数をラムダ式で書くわけもなく、普通に関数定義するし
285 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:21:31.64 ] >全ての関数をラムダ式で書くわけもなく、普通に関数定義するし 普通の関数もかけるのは当たり前で、 それだけじゃつらいからラムダを導入したって話だろ。 論点ずれてるだろ。何言ってんだか。 ラムダが要らないものならわざわざ変な文法作ってまで導入するかよ。
286 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:23:37.43 ] >>285 上のはラムダで書くべき例なの?
287 名前:153 mailto:sage [2012/08/16(木) 19:26:19.29 ] >>278 ,279 あらゆる関数型言語であれば関数定義無しにかけるから、 それは「関数型プログラミング」の特徴の一つである、という理屈 だってPythonだけが関数定義が無ければ書けないんだから、 マイナス評価されても当然だろ? というかさ、もしルールに不満があるならそれを最初に主張すべきだった 具体的には、>>235 の指摘に対して即座に反論すればよかったのに.... いろいろゴネたあげく、技術論で反論できないからルールに不満を言うのは カッコワルイと思うよ
288 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:29:06.48 ] >>287 つまり、実用上では何の意味もない所で優劣を競ってるのか?
289 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:30:21.57 ] 昔からお題を出し続けてる奴だろうけど、出題がゴミすぎるよね
290 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:30:51.67 ] 実用上問題がなければC++にラムダが導入されるわけ無いだろ。 あんな変な文法にしてまで、無理にでも導入したんだぞ。
291 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:36:11.33 ] ラムダの有用性は、このお題では1ミリも示せなくても、いくらでもあるだろ C++がさらに糞言語化したからラムダは有用!とか言わなくてもさ
292 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:42:16.59 ] 「こんな書き方も出来る、こんな書き方も!」 で?もっと身のある話はないのかよ
293 名前:デフォルトの名無しさん [2012/08/16(木) 19:55:52.82 ] www.youtube.com/watch?v=cjhV2OzifSg&feature=relmfu
294 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:14:22.38 ] >>287 あれ?お前>>255 でRubyはOOPLだから関数内関数無くても良いんだとか 言ってなかったっけ? 関数型言語では関数内関数あるんだからRubyではdefの入れ子で 関数内関数が定義できないのはマイナス評価されても良いの?
295 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:16:11.07 ] Pythonに無名関数(複数行lambda)あってもいいじゃんと思ってたけど [Python-ideas] a new lambda syntax mail.python.org/pipermail/python-ideas/2009-October/006208.html めぐりめぐってGuidoのコメント mail.python.org/pipermail/python-ideas/2009-October/006306.html # mail.python.org/pipermail/python-ideas/2009-October/006228.html のコードをもとに ys = [Document(lambda{ h = generate_header() if x.is_first_page else None b = generate_body(x) f = generate_fotter() if x.is_last_page else None return h, b, f}) for x in xs] こういうコード書く人が出てくるからやめたほうがいいね
296 名前:uy [2012/08/16(木) 20:16:17.97 ] それはマイナスだよ ゴミ
297 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:18:08.51 ] (1)Pythonのlambdaじゃ書けなくて (2)関数を定義したら冗長になってしまうほど短い そんな例題があればいいんだよ
298 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:22:49.99 ] 153は出す御題もゴミの上に 都合の悪いレスはスルーするというゴミっぷり ゴミの中のゴミ
299 名前:uy [2012/08/16(木) 20:23:21.31 ] 勘違いされやすい文法はゴミカスだ
300 名前:デフォルトの名無しさん [2012/08/16(木) 20:24:33.39 ] 私が改造したソース帰ってこないじゃん。
301 名前:uy [2012/08/16(木) 20:33:38.40 ] ゴミだからだろ
302 名前:デフォルトの名無しさん [2012/08/16(木) 20:38:52.33 ] 8時半だしお家かえる
303 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:42:02.02 ] >>287 いやいや、スレ読んでみたら、>>211 に対して後付けで 関数定義はダメって言い出してるけど? 後付けでルールを追加するのってカッコワルイね
304 名前:uy [2012/08/16(木) 20:53:09.03 ] rubyのメソッド内メソッド定義はカス しかしそれをマイナス点にしても最強なのだった
305 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:57:19.93 ] Rubyはひたすらendでも打ってろ
306 名前:153 mailto:sage [2012/08/16(木) 21:05:50.99 ] 関数型言語としてHaskellだけを取り上げて「あらゆる関数型言語(>>287 )」と言うのは 不公平だと思うから、それ以外の関数型言語のコード例について、過去スレ19,20からコピペする なお、このコードは>>286 氏ご希望のラムダ式で書く典型的なコード例となる ==== Standard ML ==== datatype 'a Option = None | Some of 'a val ys = map ( fn x => let val h = if is_first_page x then generate_header else None val b = generate_body x val f = if is_last_page x then generate_footer else None in (h, b, f) end ) xs 同等な多言語のコード例については以下を参照 ・Haskell >>197 上段 ・Python >>197 下段および>>211 ・Ruby >>198
307 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:10:23.55 ] 関数型言語の話をしたいだけなんだな、こいつは
308 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:10:42.85 ] お題がクソだと散々言われてるのに 話を引っ張る空気読めないっぷりがウケるw
309 名前:uy [2012/08/16(木) 21:15:05.50 ] たまに関数型言語厨が迷い込むよね 同じ奴なんですか?
310 名前:153 mailto:sage [2012/08/16(木) 21:19:31.47 ] >>294 >関数型言語では関数内関数あるんだからRubyではdefの入れ子で >関数内関数が定義できないのはマイナス評価されても良いの? 正確には「関数内関数定義で内部の関数が外部から隠蔽されない」だね もちろんこの点はRubyのマイナス評価であると認めるよ また、アンカも間違いで(>>255 ではなくて)>>243 じゃないかな? さらに言えば、>>297 自身も(>>243 ,248から)引用しているように、 このマイナス評価はRubyにとっては致命的な欠点ではない もしも致命的ではないという意見が不満ならば、 >>248 の最後でリクエストしたように具体的なコードで語って欲しい 論よりコードだ
311 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:23:03.20 ] >>310 > もしも致命的ではないという意見が不満ならば、 Pythonの関数定義が致命的だって話は何時同意を得たんだ? 少なくとも>>211 は関数定義で全く問題ない せめて>>297 を満たす御題くらい作れよ 論よりコードなんだろ?
312 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 21:23:21.86 ] >>310 Pythonユーザなら誰も書かないようなコード貼っといて論よりコードは流石になかろう
313 名前:153 mailto:sage [2012/08/16(木) 21:23:30.23 ] >>289 その「都合の悪いレス」とやらのレス番を書きなさい そうすれば反論してあげるよ それとも反論されるのが怖いヘタレかい?
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を破壊して二度と書き込まないでほしい