[Ocaml-reins-devel] possible bugs in iterators
Status: Beta
Brought to you by:
mfurr
|
From: Ashish A. <aga...@gm...> - 2007-11-05 22:29:27
|
Hi. Please consider following code: ---------- module Set = Reins.AVLSet.MonoSet(Reins.Types.Int) module Iter = Reins.TreeSetIterator.Make(Set) let l = [3;5;2;7;4;8;1] let s = List.fold_left (fun s v -> Set.add v s) Set.empty l let dir = Iter.Ascending Iter.InOrder let m = 3 let trav = Iter.Traverse_While (fun n -> n <= m) let iter = Iter.create dir trav s let _ = Iter.iter (fun k -> print_string (string_of_int k ^ " ")) iter ----------- which prints out 1 2 3 4 What is the semantics of Traverse_While? I was expecting the iterator to stop at 3. The iterator seems to go one element extra. Trying with m = 0 prints the value 1 even though the predicate given to Traverse_While is never satisfied. Also, leave m = 3, and remove 2 from the list. Then we get Exception: Failure "get_value". Alternatively, leave the list as shown above and set m = 7. I was expecting same error again, but there is no Failure this time. |