diff options
author | 2004-07-28 21:54:47 +0000 | |
---|---|---|
committer | 2004-07-28 21:54:47 +0000 | |
commit | 6b649aba925b6f7462da07599fe67ebb12a3460e (patch) | |
tree | 43656bcaa51164548f3fa14e5b10de5ef1088574 /contrib/interface/paths.ml |
Imported Upstream version 8.0pl1upstream/8.0pl1
Diffstat (limited to 'contrib/interface/paths.ml')
-rw-r--r-- | contrib/interface/paths.ml | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/contrib/interface/paths.ml b/contrib/interface/paths.ml new file mode 100644 index 00000000..b1244d15 --- /dev/null +++ b/contrib/interface/paths.ml @@ -0,0 +1,26 @@ +let int_list_to_string s l = + List.fold_left + (fun s -> (fun v -> s ^ " " ^ (string_of_int v))) + s + l;; + +(* Given two paths, this function returns the longest common prefix and the + two suffixes. *) +let rec decompose_path + : (int list * int list) -> (int list * int list * int list) = + function + (a::l,b::m) when a = b -> + let (c,p1,p2) = decompose_path (l,m) in + (a::c,p1,p2) + | p1,p2 -> [], p1, p2;; + +let rec is_prefix p1 p2 = match p1,p2 with + [], _ -> true +| a::tl1, b::tl2 when a = b -> is_prefix tl1 tl2 +| _ -> false;; + +let rec lex_smaller p1 p2 = match p1,p2 with + [], _ -> true +| a::tl1, b::tl2 when a < b -> true +| a::tl1, b::tl2 when a = b -> lex_smaller tl1 tl2 +| _ -> false;;
\ No newline at end of file |