Browse thread
Getting an element of a hashtable: simple ... or is it?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Peng Zang <peng.zang@g...> |
| Subject: | Re: [Caml-list] Getting an element of a hashtable: simple ... or is it? |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I think this is pretty standard. At least, I see it in ExtLib and I do it on a regular basis. In fact I have a function to do this for me so I don't have to do it over and over again. Eg. let get_one ht = mkGetOne Hashtbl.iter ht Peng On Tuesday 05 August 2008 08:05:46 am Brighten Godfrey wrote: > Hi, > > Suppose you are given a data structure, and you want to retrive one > element -- any one element. Sounds simple... and it is, if you have > a list (List.hd list) or an array (arr.(0)). But how about a > hashtable, if we don't know a priori any of the keys in the hashtable? > > The best way I've thought of so far is to begin iterating through all > the hashtable's elements, but then break out with an exception: > > exception Done > let get_one ht = > let el = ref None in > (try ( > Hashtbl.iter (fun i _ -> > el := Some i; > raise Done) > ht; > ) > with Done -> ()); > match !el with > None -> raise Not_found > > | Some x -> x > > But this seems clumsy. Any better ideas? > > Thanks, > Brighten Godfrey > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.7 (GNU/Linux) iD8DBQFImFPifIRcEFL/JewRAreVAKCOxjyr8uXNIOknO4zmL+i0La4RCQCcDLV1 OXN2V4ZiS8oxC5hQOf5phYU= =ZXwI -----END PGP SIGNATURE-----