At 10 Jul 2001 19:15:21 +0900,
Tanaka Akira wrote:
> |    == md
> | 
> |         与えられたダイジェストオブジェクトと比較する。
> 
> という記述を読んで、最初私はダイジェストオブジェクトの内部状態を比較す
> るものだと想像しました。が、ソースを読んでみると、その時点におけるダイ
> ジェストを比較するもののようなので、その点の説明を足したほうがいいんじゃ
> ないかと思います。

 今はダイジェストライブラリは全て同梱なので、構造体の比較関数を
用意して内部状態を比較してやるようにしました。ダイジェスト値を
計算しなくて済みますしね。

# 当初はそうしたかったんですが、 OpenSSL の MD5 管理構造体 MD5_CTX
# と Ruby に付属の md5.[ch] の構造体 md5_state_t のメンバ名が食い
# 違っていたりして、構造体同士の比較をスマートに書けないので断念
# したという事情がありました。

> あと、eql? と hash は再定義しないんでしょうか?
> (freeze も?)

 私は、ダイジェストオブジェクトは単なるユーティリティ的な存在で
あり、保存(永続化)や二次利用の対象ではないと考えています。

 従ってハッシュのキーにしたり、 dump/load したり、 freeze した
物を渡して中身(digest, hexdigest)を参照して使ってもらう、という
使い方は想定していません。

# たぶん、 clone() も使われることはほとんどなさそう...

 そういう風に回して使うのは digest または hexdigest の値(文字列)
でいいと思いますが、いかがでしょうか。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"