2010-10-30 23 views
10

'daki eşler (anahtar, değer) listesine dönüştürme OCS'de bir karma tablosunu (anahtar, çift) değerlerine dönüştürmenin bir yolu var mı?Karma tabloyu OCaml

Bir karma tablo ht verilen biz piller kitaplığı kullanarak

BatList.of_enum (BatHashtbl.enum ht) 

yapabilirsiniz farkındayım. Bu, tabloyu bir numaralandırmaya dönüştürecek ve enum'u bir listeye dönüştürecektir. Ama piller kütüphanesi kullanmayan bir çözüm arıyorum. standard OCaml Hashtbl Module'da çiftleri liste olarak veya bu amaca ulaşmak için işlevlerini birleştirmenin bir yolu olarak çıkarmanın bir yolu yoktur. Baska öneri?

orada standart OCaml Hashtbl Modülde
+1

, ben (burada yaptığımız gibi) baktım Söz konusu söyleyerek çok iyi bir uygulama olduğunu düşünüyorum: o sağda bir cevap sağlamaya yardımcı Seviye, denediniz ve bana Hashtbl.fold :) türüne bakma zamanını kazandığımı (kalbimden bilmediğimi, ancak bir kural olarak, "fold" olarak adlandırıldığında 'fold_right') –

cevap

27

Danışmanın

yoktur ... olmak görünmüyor!

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

Yani, kullanım: Bu arada

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

Harika! Çok teşekkürler! – Surikator