tw.log

https://twitter.com/kinaba のログ (twilog の方が便利です。)

<<newer (latest) older>>

20080716 07:34 search.twitter.com 日本語かどうかの判定が微妙だな
20080716 09:41 あれだなーやっぱり俺は実装力がなさすぎる。黙ってコード書けよって感じ。 ggg
20080716 10:20 http://parametron.blogspot.com/2008/07/3-not-problem.html が not 1つでできるような気がしてしまっているのでたぶん何か勘違いしている
20080716 10:21 やっぱり勘違いしていた
20080716 14:33 @nagise 逆にクロージャのデメリットってなにがあるんでしょうか。言語仕様が複雑になること?
20080716 14:47 @nagise 個人的には http://www.javac.info/closures-v04.html の with の例のようなものが書けるのが大きいと思います。あれは return/continue/break を考えると内部クラスのみで実現するのはとても大変
20080716 14:51 @nagise スコープに関して何かそんなに変わってましたっけ…単に1メソッド内部クラスのシンタックスシュガーだと思ってました
20080716 15:02 くるるさんの数学ガールがのっけから難しすぎて紅茶吹いた
20080716 15:19 @nagise とりあえず外の変数の変更もできたかと(ちょっとあやふや)> Java のクロージャ
20080716 15:21 @nagise あと、「単なる高階関数」だと return/break/continue の扱いが特に工夫されませんよね、普通。「 Java7 の」クロージャはその辺り処理してユーザー定義制御構造をちゃんと書けるようにしてあるところがポイントだと思うのです
20080716 15:21 いわゆる「クロージャ」よりは Ruby のブロックに近い
20080716 16:02 @nagise http://twitter.com/t_yano/statuses/859762588 「 function(){} の内側から外の変数にアクセスできる」 == 「環境をもってる」なので、そういう機能のことをクロージャと呼んで別に構わないのでは
20080716 16:06 「クロージャ」ってそもそも物凄く使われ方が混乱してる単語なので細かいところを気にすると負けではあると思う
20080716 16:09 元々は「 function(){...} の内側から外側の変数を参照できる(読めるだけのこともあるし書けるだけのこともある、言語による)」という機能を実装するための処理系側の実装手法のことで、それがそういう「外もさわれる関数」そのものを指す用語になってきちゃった感じ
20080716 16:10 外の変数を変更できるかできないかの差を重視する観点はあんまり無いように思います…。単に環境に値を格納するか mutable な参照を格納するかの差でしかないので
20080716 16:19 そして設計のパラダイムにも影響すると思うなーというのが http://twitter.com/kinaba/statuses/859736498 この辺り、と、あと、1メソッド内部クラスと比べて書くのがずっと楽になるのでそういう API を積極的に適用できるようになるとは思う
20080716 16:24 @nagise バラモス様 (^^;;;; いっちゃん下の with(FileReader in : makeReader()) { … } のヤツです。最初の "Closure Literals" の後半 3 段落に書いてあるように、 { … } が作るクロ ...
20080716 16:25 break や continue や return すると外側スコープでループを抜けたり関数抜けたりできます。
20080716 16:31 tanakh さんのソースを呼んで guard をこうやって使うのかーと目から鱗を落としているところ
20080716 16:33 @nagise です。それが、クロージャを使うと using のような言語のプリミティブではなくてライブラリのメソッドとして自分で書けるようになってます
20080716 17:01 キャンベラってシドニーから4時間半もするのか1時間くらいかと思ってた
20080716 17:15 ゆうはんタイム

<<newer (latest) older>>

presented by k.inaba (kiki .a.t. kmonos.net) under CC0