diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-07-11 00:51:11 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-11 00:51:11 -0300 |
| commit | bb3156b8ab78b035ce886bbe3021ec7cbe269d03 (patch) | |
| tree | 82dd52655d25e49519a035f1245c703e910a2152 /lib/concepts/Path.ml | |
| parent | 85bff2fc22a131cce5ec2b4eb4b3dd8269c247cd (diff) | |
| download | RNT-bb3156b8ab78b035ce886bbe3021ec7cbe269d03.tar.gz RNT-bb3156b8ab78b035ce886bbe3021ec7cbe269d03.zip | |
FOL: First Order Logic Execution Engine
Co-authored-by: Estevan Castilho <tevo@riajuu.net>
Diffstat (limited to 'lib/concepts/Path.ml')
| -rw-r--r-- | lib/concepts/Path.ml | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/concepts/Path.ml b/lib/concepts/Path.ml new file mode 100644 index 0000000..c751301 --- /dev/null +++ b/lib/concepts/Path.ml @@ -0,0 +1,16 @@ +type t = string BatFingerTree.t + +let empty : t = BatFingerTree.empty +let of_list (components : string list) : t = BatFingerTree.of_list components +let to_list (path : t) : string list = BatFingerTree.to_list path +let snoc (path : t) (component : string) : t = BatFingerTree.snoc path component +let to_string (path : t) : string = String.concat "/" (to_list path) + +let is_prefix ~(prefix : t) (path : t) : bool = + let rec walk prefix path = + match prefix, path with + | [], _ -> true + | p :: prefix, x :: path -> p = x && walk prefix path + | _ :: _, [] -> false + in + walk (to_list prefix) (to_list path) |
