「ただの静的型付け言語」ってのは…

皆様ご存知の、静的型付け機能のある言語、でごじゃいます。

>>C#の場合、varは「これから(型は知らんけど)変数書きますよ。名前は○○で、値は〜〜」と発想する書き方の中で使うわけですよね。

これは勝手な思い込みでしょう.型の連鎖で綺麗にきまるので,いちいち書くまでもないって話だと思います.重要なのはどう関数が繋がっているかで,それがきちんと繋がっていれば型なんて一意に求まるもんでしょう.だから書かないだけですよ.繋がるの分かってますから.
リテラルを var で受ける話に注目しすぎなんじゃないかと.

そう言われても「どこでもvar」がイヤな人の気持ちは結局この辺にあると思うので、そこに注目しないと意味が無いというか、いくら啓蒙しようとしても通じないと言いますか。

NyaRuRuさんのご意見がちゃんと理解できていないようで申し訳ないのですが……例えば
http://d.hatena.ne.jp/NyaRuRu/20080311/p1
の例は、興味があるのはanswersという変数が受け取る「データ」だけであって、answersの「型」に興味はない…というかどうでも構わない…違うな、一意に決まるからいちいち意識したくない、例ですよね?こういう場合は別にautoやvarでも構わないと思います。まあ、できたら

ICollection<auto> answers =

と書けたら一番嬉しいんだけど。

C++畑の人は、answersの型が知りたい、その型をコントロールしたい、という強い欲求を持つ…ように調教されてきた(^^;…んだと思います。こっちにちらと書きましたが、その根っこにあるのは書き手の、answerに込める意図*1で、型を明示的に書くのが自然な人間にとっては、型を書くのは「制約を掛ける」とかなんとか言う前に、意図の自然なトレースでしかない面があるんじゃないでしょうか。
つまりvar/autoを書きたくない場合というのは

  • 「右辺の式の結果(の型)が欲しい」

のじゃなくて、

  • 「左辺の変数の型で結果が欲しい」

という意図で書いてる時なんじゃなかろうか、というわけです。こういう時は、どうやってもそこにautoやvarは書けないです。

…と、思いながらここの中盤(うちのリンクが出てくる前あたり)を読むと、そんなに外してないような気がするんですけど。

*1:書き手の込めた意図が読み手に伝わるかどうかは、ここではどうでもよい。

オーバーロード関数をファンクタとして渡すときにあると便利かもしれないマクロ

http://d.hatena.ne.jp/faith_and_brave/20080205/1202201978
http://d.hatena.ne.jp/wata_d/20080205/1202219892
テキトーなのを書いてみました:

OVERLOAD_ADAPTOR(double, stod) stod_a;

transform(ar, ar + 3, back_inserter(v), stod_a)
続きを読む

ぼそっ

ProtoがReview Queueに入ったのは目出度いんだけど、どうしてid:mb2syncさんのEggは頑なに無視されてんだろう。Submission Process的に問題があるのか、本当に見落としているだけなのか(Dan Marsdenがツッコミ入れてるけど)、あるいはoff-listで動きがあるのか。

それはそれとして、1.35がそろそろ出てくるようだ。今回はメジャーな追加ライブラリも入って久々の大物という印象。
これを機会にBDTも再開したいところなんだけど、ちょっと無理かな…。

Xanth新刊きた!

http://www.hayakawa-online.co.jp/product/issue_schedules/paperback/list.html

ガーゴイルの誓い 966円
ピアズ・アンソニイ(著)
ISBN: 978415 刊行日: 2008/01/25
〈〈魔法の国ザンス18〉〉魔法のフィルターを探すため、ガーゴイルの ゲイリーは美少女サプライズと冒険の旅に!

ひゃっほう、久しぶり!
…ところでこの10年くらい、書店の洋書売り場でアンソニー見てませんね。
やっぱマニアの人たちはamazonで買ってるのかな??