トップ «前の日記(2003-08-08) 最新 次の日記(2003-08-11)» 月表示 編集

日々の流転


2003-08-09 [長年日記]

λ. 昼過ぎに起きる。よく寝たなぁ。今頃 LL Saturday やってるかな。

λ. 弟が帰省。弟が持って帰ってきた漫画を読む。

λ. Re: 同一でないにもかかわらずそれが判定できないってどういう状況?

ちょっと曖昧な表現ですが、2つのオブジェクトが、あらゆるオペレーションに対して同じ結果をもたらすならば、その2つのオブジェクトが同一であるかを判定する事はできないです。例えば、仮にRubyにObject#__id__やObject#equal?がなかったとしたら、2つの同値なBignumが同一であるかどうかすら判定することは出来ないはずです。(追記: Rubyだとこの場合でも singleton method やインスタンス変数を追加したりすることで判定できてしまいますね。すっかり見落としてました。まぁ、むりやり捻り出した例なので、あまり細かいことは気にしないで下さいな)

こういうのを Behavioral Equivalence っていうんだっけかな。実はよく知らないんだけど。

λ. 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()使えってのはもっともだけど、このトリッキーさにちょっと感動。

本日のツッコミ(全6件) [ツッコミを入れる]
ψ 通りすがり (2003-08-10 04:58)

昔、8bitマイコンのBASICでは整数→16進文字列変換を<br>print right$("000" + hex$(x), 4)<br>みたいに書いてました。<br>元記事のライターさんはそういう世代なのでは?

ψ さかい (2003-08-10 16:08)

なるほど。勉強になります。<br><br>P.S.<br>関係ないですけど、そういえばJavaにはprintf()系の機能はないんですよね。<br>printf()系に比べるとjava.text.Formatとかはちょっと面倒くさいなぁ (^^;)

ψ あるふぁ (2003-08-10 22:39)

J2SE1.5 では printf() が提供されるはずです。

ψ さかい (2003-08-11 01:53)

おぉ、そうなのですか。それは知りませんでした。<br>J2SE 1.5 といえばGenericsはよく耳にしますが、他にも色々新機能が入るのですね。

ψ wisteria (2003-08-11 14:05)

printfが提供されるってことは、数値をunsignedで出力するとかサポートされるのかしら。<br>いや、調べればいいんだけどさ。

ψ さかい (2003-08-11 16:19)

数値をunsignedで出力するってこういう事?<br>out.printf("%ud\n", -1);<br>=> 4294967295