2010-10-30 32 views
10

Có cách nào chuyển đổi bảng băm thành danh sách giá trị (khóa, cặp) trong OCaml không?Chuyển đổi bảng băm thành danh sách các cặp (khóa, giá trị) trong OCaml

Tôi biết rằng, đưa ra một bảng băm ht chúng ta có thể làm

BatList.of_enum (BatHashtbl.enum ht) 

sử dụng thư viện pin. Điều này sẽ chuyển đổi bảng thành một liệt kê và sau đó chuyển đổi enum thành một danh sách. Nhưng tôi đang tìm một giải pháp không sử dụng Thư viện Pin. Trong các standard OCaml Hashtbl Module có vẻ không phải là một cách để giải nén các cặp như một danh sách hoặc một cách kết hợp các chức năng của nó để đạt được mục đích này. Bất kỳ đề xuất?

+1

Bằng cách này, tôi nghĩ rằng nói trong câu hỏi mà bạn nhìn (như bạn đã làm ở đây) là thực hành rất tốt: nó giúp cung cấp một câu trả lời ở bên phải mức độ, cho thấy rằng bạn đã thử, và tiết kiệm cho tôi thời gian để tìm kiếm các loại Hashtbl.fold :) (mà tôi không biết bằng trái tim, nhưng như một quy tắc của ngón tay cái, khi nó được gọi là 'fold' loại là của 'fold_right') –

Trả lời

27

Trong OCaml Hashtbl Mô-đun tiêu chuẩn có vẻ không phải là ...

Trong couse có!

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

Vì vậy, sử dụng:

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

Tuyệt vời! Cảm ơn rất nhiều! – Surikator

Các vấn đề liên quan