ハッシュの概念はわかる、けど実際のところどんなもんかよくわかってない…。特に文字列のハッシュ値をどうやって計算してるのかと、ハッシュ値が衝突したときにどうするのかと、バッファのサイズをどうするのか。なのでいくつかの処理系を調べてみた。 Gauche ソースを'hash'でgrepしたらそれらしい部分が見つかった。 /* General hash function */ u_long Scm_Hash(ScmObj obj) { u_long hashval; if (!SCM_PTRP(obj)) { SMALL_INT_HASH(hashval, (u_long)SCM_WORD(obj)); return hashval; } else if (SCM_NUMBERP(obj)) { return Scm_EqvHash(obj); } else if (SCM_STRINGP(obj