[{"name":"RadixTree","comment":" Radix tree as defined is defined in Wikipedia: <https://en.wikipedia.org/wiki/Radix_tree>\n\nA data structure that represents a space-optimized trie (prefix tree) in which\neach node that is the only child is merged with its parent\n\nIt would be easier to follow by example, or try it on a helpful app like\nthis one: <https://www.cs.usfca.edu/~galles/visualization/RadixTree.html>\n\nSay we have the following list of chars:\n\n    [ [ \"r\", \"o\", \"m\", \"a\", \"n\", \"e\" ]\n    , [ \"r\", \"o\", \"m\", \"u\", \"l\", \"u\", \"s\" ]\n    , [ \"r\", \"u\", \"b\", \"e\", \"n\", \"s\" ]\n    , [ \"r\", \"u\", \"b\", \"e\", \"r\" ]\n    , [ \"r\", \"u\", \"b\", \"i\", \"c\", \"o\", \"n\" ]\n    , [ \"r\", \"u\", \"b\", \"i\", \"c\", \"u\", \"n\", \"d\", \"u\", \"s\" ]\n    ]\n\nWe would like to represent this as a Radix tree. Where letters that repeat are\nin parent nodes, and the rest are in child nodes.\n\nIt would look like this:\n\n  - r\n      - ub\n          - ic\n              - undus\n              - on\n          - e\n              - r\n              - ns\n      - om\n          - ulus\n          - ane\n\nThis package allows inserting values to the tree in an Ordered and Un-ordered manner.\nThe ordered one is presented above. The \"order\" is in relation to the position of each\nletter. That is, when we look for the letter \"r\" that is the beginning of the list\n, on an Ordered list, we match it only to other \"r\" letters that are also at the beginning.\n\nAn Un-ordered insert on the other hand doesn't care about the position of the chars, but rather if they exist or not.\n\nHere's an example of how an un-ordered insert would result, assuming we have this list\nof Int.\n\n[ [1, 2, 3]\n, [2, 1, 4]\n, [4, 5, 6]\n]\n\nThis will result with:\n\n  - 1, 2\n      - 3\n      - 4\n          - 5\n          - 6\n\n\n# Build\n\n@docs empty, singleton, insert, insertWith, insertUnOrdered\n\n\n# Lists manipulation\n\n@docs orderedIntersect, orderedRemove, unOrderedIntersect, unOrderedRemove\n\n","unions":[],"aliases":[],"values":[{"name":"empty","comment":" Create an empty Radix tree.\n\n    import Tree\n\n    empty\n        |> Tree.label --> []\n\n","type":"Tree.Tree (List.List a)"},{"name":"insert","comment":" An Ordered insert of a value to the Radix tree.\n\n    import Tree\n\n    singleton [1, 2, 3]\n        |> insert [1, 2, 4]\n        |> Tree.label --> [1, 2]\n\n    singleton [1, 2, 3]\n        |> insert [1, 2, 4]\n        |> Tree.children --> [singleton [4], singleton [3]]\n\n","type":"List.List a -> Tree.Tree (List.List a) -> Tree.Tree (List.List a)"},{"name":"insertUnOrdered","comment":" An Un-ordered insert of a value to the Radix tree.\n\n    import Tree\n\n    singleton [1, 2, 3]\n        |> insertUnOrdered [2, 1, 4]\n        |> Tree.label --> [2, 1]\n\n","type":"List.List a -> Tree.Tree (List.List a) -> Tree.Tree (List.List a)"},{"name":"insertWith","comment":" Generalized insert, that accepts a tuple with the insert function, and the remove function\nto apply.\n\nSee the 'split' function.\n\n","type":"( List.List a -> List.List a -> List.List a, List.List a -> List.List a -> List.List a ) -> List.List a -> Tree.Tree (List.List a) -> Tree.Tree (List.List a)"},{"name":"orderedIntersect","comment":" Find the matching elements, with regard to their order in the list. That is,\nwe look for matches starting from the first element.\n","type":"List.List a -> List.List a -> List.List a"},{"name":"orderedRemove","comment":" Remove matching elements, with regard to their order in the list. That is,\nonly if the elements are in the beginning fo the list they will be removed.\n","type":"List.List a -> List.List a -> List.List a"},{"name":"singleton","comment":" Create an Radix tree with a single value.\n\n    import Tree\n\n    singleton [1, 2, 3]\n        |> Tree.label --> [1, 2, 3]\n\n","type":"List.List a -> Tree.Tree (List.List a)"},{"name":"unOrderedIntersect","comment":" Find the matching elements, regardless of their order in the list.\n","type":"List.List a -> List.List a -> List.List a"},{"name":"unOrderedRemove","comment":" Remove matching elements, with no regard to of their order in the list. That is,\neven if the element is in the middle or end of the list, it will be removed.\n","type":"List.List a -> List.List a -> List.List a"}],"binops":[]}]