package ocp-index

  1. Overview
  2. Docs

Module IndexTrieSource

This module defines a generic data structure: Lazy tries based on lists

Sourcetype ('a, 'b) t

Type of tries mapping from 'a list to 'b

Sourceval empty : ('a, 'b) t
Sourceval create : ?children:('a * ('a, 'b) t) list Lazy.t -> ?value:'b -> unit -> ('a, 'b) t

Create a new trie with the given components

Sourceval mem : ('a, 'b) t -> 'a list -> bool

Returns true if there is a value associated with the given path

Sourceval find : ('a, 'b) t -> 'a list -> 'b

Returns the value associated with the given path.

  • raises [Not_found]
Sourceval find_all : ('a, 'b) t -> 'a list -> 'b list

Returns all values associated with the given path, most recent first.

Sourceval set : ('a, 'b) t -> 'a list -> 'b -> ('a, 'b) t

Associates a value with the given path, or replaces if there was already one

Sourceval set_lazy : ('a, 'b) t -> 'a list -> 'b Lazy.t -> ('a, 'b) t

The same but taking a lazy value

Sourceval add : ('a, 'b) t -> 'a list -> 'b -> ('a, 'b) t

Associates a value with the given path, keeping previous bindings

Sourceval add_lazy : ('a, 'b) t -> 'a list -> 'b Lazy.t -> ('a, 'b) t

The same but taking a lazy value

Sourceval unset : ('a, 'b) t -> 'a list -> ('a, 'b) t

Removes all associations to a given key from the trie. Warning: doesn't cleanup branches that don't point to anything anymore

Sourceval map_subtree : ('a, 'b) t -> 'a list -> (('a, 'b) t -> ('a, 'b) t) -> ('a, 'b) t

map_subtree tree path f applies f on value and children of the node found at path in tree, and bind the returned node back at that position in the tree

Sourceval iter : ('a list -> 'b -> unit) -> ('a, 'b) t -> unit

iters over all the bindings in the trie, top-down

Sourceval fold : ('acc -> 'a list -> 'b -> 'acc) -> ('a, 'b) t -> 'acc -> 'acc

folds over all bindings of the trie, bottom-up

Sourceval fold0 : ('acc -> 'a list -> 'b list -> 'acc) -> ('a, 'b) t -> 'acc -> 'acc

same as fold, but the list of bindings at a given path is given at once

Sourceval map : ('a list -> 'b -> 'c) -> ('a, 'b) t -> ('a, 'c) t

Maps over all bindings of the trie

Sourceval sub : ('a, 'b) t -> 'a list -> ('a, 'b) t

sub t p returns the sub-trie associated with the path p in the trie t. If p is not a valid path of t, it returns an empty trie.

Sourceval filter_keys : ('a -> bool) -> ('a, 'b) t -> ('a, 'b) t

filter f t returns t with all subtrees for which f key = false pruned

Sourceval graft : ('a, 'b) t -> 'a list -> ('a, 'b) t -> ('a, 'b) t

graft tree path subtree grafts the children of subtree in tree at path, replacing the whole subtree

Sourceval graft_lazy : ('a, 'b) t -> 'a list -> ('a, 'b) t Lazy.t -> ('a, 'b) t

Lazy version of graft

Sourceval merge : ?values:('b list -> 'b list -> 'b list) -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

Merges two tries, accepting an optional function to resolve value conflicts. The default function pushes right-hand values on top of left-hand ones

Sourceval append : ('a, 'b) t -> ('a list * ('a, 'b) t) -> ('a, 'b) t

append tree (path, subtree) appends subtree in tree at path, merging with the previous subtree of tree. The interface allows for multiple appends with a simple List.fold_left

OCaml

Innovation. Community. Security.