Java7 のダイアモンドオペレータと型推論について。

『Java7 ジェネリクスのダイアモンド・オペレータ』プログラマーの脳みそ(http://d.hatena.ne.jp/Nagise/20110729/1311950039) で解説されている内容から派生した、Java のジェネリクスや型推論まわりの話など。 ・・・話のレヴェル高いお(´Д` )
15
前へ 1 ・・ 3 4

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Suguru ARAKAWA @ashigeru

@nagise http://t.co/UCmYB1M 手前味噌で申し訳ないですが、型推論できるできないの違いに、代入変換かそうでないかというものがあります。

2011-08-01 01:52:20
なぎせ ゆうき @nagise

しげるさんのこのエントリは当時、驚嘆したが、真面目に全部おっかけてなかった(反省 QT @ashigeru http://t.co/WNN7qJF 手前味噌で申し訳ないですが、型推論できるできないの違いに、代入変換かそうでないかというものがあります。

2011-08-01 01:55:28
Suguru ARAKAWA @ashigeru

@nagise 自分メモなので小難しい書き方ですんませんorz

2011-08-01 01:56:14
なぎせ ゆうき @nagise

@ashigeru いえいえ。あのへんは言語仕様の中でもかなり読むのがツライところだと思います。読んでも理解するのを挫折しかねない…。僕も半端にしか理解できてない…。不勉強が露呈しているw

2011-08-01 01:57:47
なぎせ ゆうき @nagise

実装側の動きを調べて、これは手抜きしてるんじゃないかと推測した自分の考えは浅かったなあ…。

2011-08-01 01:58:59
kmizu @kmizu

これは別に @nagise さんへの批判ではなく、一応言語屋さん(?)である自分が、どういう思考過程でそういう推論をしてたのか、あたりが参考になれば、と思って書いてみました。

2011-08-01 02:08:06
kmizu @kmizu

.@ashigeru さんも、ポスト見る限り、似たような推論をされてたように思います。あと、左辺がワイルドカードの場合に、単にraw typeでコンパイルする、というのは型安全性をぶち壊す危険性が思いっきりあるので、きちんと証明しないと危な過ぎる、という話も。

2011-08-01 02:04:57
Suguru ARAKAWA @ashigeru

@kmizu 個人的に言えば、ダイアモンドオペレーターでは代入以外の文脈でも型推論してくれていい気はするんですよね。反例が見つからない状態です。

2011-08-01 02:07:43
なぎせ ゆうき @nagise

@kmizu 自分の場合は反例がなかなか見つけられなかったんで、先走っちゃいましたね。明確な反例が見つかってよかった。

2011-08-01 02:09:48
kmizu @kmizu

@ashigeru ええ。それはやってくれてもいいと思うんですが、Java 5の型パラメータ推論と挙動が同じになるような仕様っぽいので、その辺拡張するなら、型パラメータの推論規則も拡張して欲しい、と個人的には思います。

2011-08-01 02:18:17
Suguru ARAKAWA @ashigeru

@kmizu メソッドの方は生の型変数の推論が入って、メソッド間で推論結果が振動しかねないですからね…。ダイアモンドオペレーターならイレイジャが確定した状態で始まるので、多少はマシかなと思った次第でした。

2011-08-01 02:20:26
kmizu @kmizu

@ashigeru なるほど。ただ、「ダイアモンドオペレータ」みたいな小さな変更に対して、あまり期待するのが酷なのではないか、と思います。

2011-08-01 02:24:15

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

くっくっkura 🇯🇵🦀 @PG_kura

『Java7 のダイアモンドオペレータと型推論について。』をトゥギャりました。 Togetter http://t.co/d7r1qyn

2011-08-01 02:14:53
Kenji Yoshida @xuwei_k

(実際試してみないと)結構言ってること分からないというか、「自分は単にScalaに慣れてるだけで、型に関して抽象的に考える習慣とか能力がかけてるなー」と思い知らされる。まぁjava7の型推論まわりにあまり興味湧いてないっていうのもあるけど http://t.co/jA4CYXa

2011-08-01 02:31:00
kmizu @kmizu

@nagise いえいえ。 @nagise さんが先走ったというより、たぶん、アプリケーションをメインに開発されている方の観点と、言語の仕様とか実装よりの人だと、推論の仕方が異なっていた、という話じゃないかと。この辺、結構面白いと思うのでその内議論してみたいところです。

2011-08-01 02:26:26
なぎせ ゆうき @nagise

@kmizu 推論はやはり経験に即してということだと思いますね。僕の知見の範疇では、これ型推論を省略できるんじゃないの、と。そっちにいっちゃった。型推論まわりの知見があれば「ははーん」と気づけたかもしれない

2011-08-01 02:32:14
kmizu @kmizu

どの辺が違ったかと言うと、今回のケースでは、 @nagise さんは、大量のコード例を元に帰納的に、ある規則を導出しようとしたんだと思うんですね(違ったらツッコミお願いします)。

2011-08-01 02:31:52
kmizu @kmizu

で、自分とかは、まず仕様読んで、そこから演繹的に個々のコード例の振る舞いを推定しようとしていました。で、個々のコード例が仕様から明らかに乖離していたら、これは仕様ガン無視したと推定してたかもしれないですが、

2011-08-01 02:34:20
kmizu @kmizu

仕様から演繹した場合に特に矛盾が生じないので、これは仕様どおり、やはり推論してるんだろうと。

2011-08-01 02:35:14
前へ 1 ・・ 3 4