Guest User

Untitled

a guest
Jul 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.46 KB | None | 0 0
  1. let rec proc l =
  2.     match l with
  3.       | Dir(x,y)::[] -> Dir(x,y)
  4.       | x::Dir(name,n)::xs -> proc (Dir(name, x::n)::xs)
  5.             | _ -> raise Invalid_path;;
  6.        
  7. let rec addl z1 p z2 it = match p, z1, it with
  8. | [], Dir(name, y), _ -> (Dir(name, z2::y)) @ (proc (List.rev it))
  9. | x::xs, Dir(name, y::ys), z -> if x = getName y then addl xs y z2 (Dir(name, y::ys))::z else addl (Dir(name, ys)) p z2 z
  10. | _, _, _ -> raise Invalid_path;;
  11.  
  12. let add z1 p z2 = addl z1 p z2 [];;
Add Comment
Please, Sign In to add comment