将哈希表转换为OCaml中的对列表(键,值)

时间:2010-10-30 18:02:36

标签: list hashtable ocaml

有没有办法将哈希表转换为OCaml中的(键,对)值列表?

我知道,给定哈希表ht我们可以做

BatList.of_enum (BatHashtbl.enum ht)

使用电池库。这会将表转换为枚举,然后将枚举转换为列表。但我正在寻找一种不使用电池库的解决方案。在standard OCaml Hashtbl Module中,似乎没有办法将对提取为列表或将其功能组合以实现此目的的方式。有什么建议吗?

1 个答案:

答案 0 :(得分:30)

  

在标准的OCaml Hashtbl模块中似乎没有......

有没有!

val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c

所以,请使用:

fun h -> Hashtbl.fold (fun k v acc -> (k, v) :: acc) h []