2010-10-30 27 views
10

¿Hay alguna forma de convertir una tabla hash en una lista de valores (clave, par) en OCaml?Conversión de la tabla hash a la lista de pares (clave, valor) en OCaml

Soy consciente de que, dada una tabla hash ht podemos hacer

BatList.of_enum (BatHashtbl.enum ht) 

usando la biblioteca baterías. Esto convertiría la tabla en una enumeración y luego convertiría la enumeración en una lista. Pero estoy buscando una solución que no use la Biblioteca de baterías. En el standard OCaml Hashtbl Module no parece haber una forma de extraer los pares como una lista o una forma de combinar sus funciones para lograr este propósito. ¿Alguna sugerencia?

+1

Por cierto, creo que dice en la pregunta dónde ha buscado (como lo hizo aquí) es muy buena práctica: ayudar a proporcionar una respuesta a la derecha nivel, muestre que lo ha intentado, y me ha ahorrado el tiempo para buscar el tipo de Hashtbl.fold :) (que no sé de memoria, pero como regla general, cuando se llama 'fold' el tipo es que de 'fold_right') –

Respuesta

27

En el Módulo Hashtbl OCaml norma no parece ser ...

De couse que hay!

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

Por lo tanto, el uso:

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

¡Genial! ¡Muchas gracias! – Surikator

Cuestiones relacionadas