2003-08-09 [長年日記]
λ. 昼過ぎに起きる。よく寝たなぁ。今頃 LL Saturday やってるかな。
λ. 弟が帰省。弟が持って帰ってきた漫画を読む。
λ. Re: 同一でないにもかかわらずそれが判定できないってどういう状況?
ちょっと曖昧な表現ですが、2つのオブジェクトが、あらゆるオペレーションに対して同じ結果をもたらすならば、その2つのオブジェクトが同一であるかを判定する事はできないです。例えば、仮にRubyにObject#__id__やObject#equal?がなかったとしたら、2つの同値なBignumが同一であるかどうかすら判定することは出来ないはずです。(追記: Rubyだとこの場合でも singleton method やインスタンス変数を追加したりすることで判定できてしまいますね。すっかり見落としてました。まぁ、むりやり捻り出した例なので、あまり細かいことは気にしないで下さいな)
こういうのを Behavioral Equivalence っていうんだっけかな。実はよく知らないんだけど。
λ. 北朝鮮に関する報道の歴史
メモ。不定期日誌(2003-08-08) より。
λ. Re: アイデンティティ
しかし、副作用の全くないオブジェクト指向プログラミングというのは、なかなか考えにくい。はたして実用的に可能なのだろうか。もし可能なら関数型言語に完全に整合したオブジェクト指向機能が実現できそうだが。 O'Camlには副作用があるしなあ。
副作用の無いオブジェクト指向プログラミング言語といえば、一応 O'Haskell なんかがそうでしょうか。とはいっても、Monadを使って状態を表現しているわけで、まつもとさんの期待しているものとはきっと違うだろうけど。
λ. Topology via Logic 進捗
この一週間あんまし進んでない。Complete Lattice, cHa, Frame の関係でちょっとだけ混乱中。
λ. Re: お前ら sprintf() を使え
$hoge = "XXX" . substr("000$year",-4) . substr("0$month",-2)
sprintf()使えってのはもっともだけど、このトリッキーさにちょっと感動。
昔、8bitマイコンのBASICでは整数→16進文字列変換を<br>print right$("000" + hex$(x), 4)<br>みたいに書いてました。<br>元記事のライターさんはそういう世代なのでは?
なるほど。勉強になります。<br><br>P.S.<br>関係ないですけど、そういえばJavaにはprintf()系の機能はないんですよね。<br>printf()系に比べるとjava.text.Formatとかはちょっと面倒くさいなぁ (^^;)
J2SE1.5 では printf() が提供されるはずです。
おぉ、そうなのですか。それは知りませんでした。<br>J2SE 1.5 といえばGenericsはよく耳にしますが、他にも色々新機能が入るのですね。
printfが提供されるってことは、数値をunsignedで出力するとかサポートされるのかしら。<br>いや、調べればいいんだけどさ。
数値をunsignedで出力するってこういう事?<br>out.printf("%ud\n", -1);<br>=> 4294967295