Преобразование хеш-таблицы в список пар (ключ, значение) в OCaml - PullRequest
12 голосов
/ 30 октября 2010

Есть ли способ преобразования хеш-таблицы в список значений (ключ, пара) в OCaml?

Мне известно, что, учитывая хеш-таблицу ht, мы можем сделать

BatList.of_enum (BatHashtbl.enum ht)

с использованием библиотеки батарей.Это преобразовало бы таблицу в перечисление, а затем преобразовало бы перечисление в список.Но я ищу решение, которое не использует библиотеку батарей.В стандартном модуле OCaml Hashtbl , похоже, нет способа извлечь пары в виде списка или объединить их функции для достижения этой цели.Есть предложения?

1 Ответ

30 голосов
/ 30 октября 2010

В стандартном модуле 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 []
...