Hashtblにはまった
OCamlのHashtblは,(=)演算子による構造比較なのに気がつかなくて,はまってしまった.
# let key = ref 0;; val key = int ref {contents = 0} # Hashtbl.add tbl key ();; - : unit = () # Hashtbl.mem tbl key;; - : bool = true # key := 1;; // <-- keyの中身を更新 - : unit = () # Hashtbl.mem tbl key;; - : bool = false // <-- 値が取れなくなる
ここで,keyの値を0に戻すと,再び値が取れるようになる...
(==)で比較してほしかったなあとも思うが,そうするとstring型をキーとしてうまく使えなくなってしまうのか.
悩ましいところではある.