| |||||||||||||||||||||||

| |||||||||||||||||||||||

Description | |||||||||||||||||||||||

This module provides a cheap but extremely limited and dangerous alternative to using the Zipper, hence it's for INTERNAL USE ONLY. A BinPath provides a way of finding a particular element in an AVL tree again without doing any comparisons. But a BinPath is ONLY VALID IF THE TREE SHAPE DOES NOT CHANGE. | |||||||||||||||||||||||

Synopsis | |||||||||||||||||||||||

| |||||||||||||||||||||||

Documentation | |||||||||||||||||||||||

data BinPath a | |||||||||||||||||||||||

genFindPath :: (e -> Ordering) -> AVL e -> Int# | |||||||||||||||||||||||

Find the path to a AVL tree element, returns -1 (invalid path) if element not found Complexity: O(log n) | |||||||||||||||||||||||

genOpenPath :: (e -> Ordering) -> AVL e -> BinPath e | |||||||||||||||||||||||

Get the BinPath of an element using the supplied selector. Complexity: O(log n) | |||||||||||||||||||||||

genOpenPathWith :: (e -> COrdering a) -> AVL e -> BinPath a | |||||||||||||||||||||||

Get the BinPath of an element using the supplied (combining) selector. Complexity: O(log n) | |||||||||||||||||||||||

readPath :: Int# -> AVL e -> e | |||||||||||||||||||||||

Read a tree element. Assumes the path bits were extracted from Complexity: O(log n) | |||||||||||||||||||||||

writePath :: Int# -> e -> AVL e -> AVL e | |||||||||||||||||||||||

Overwrite a tree element. Assumes the path bits were extracted from N.B This operation does not change tree shape (no insertion occurs). Complexity: O(log n) | |||||||||||||||||||||||

insertPath :: Int# -> e -> AVL e -> AVL e | |||||||||||||||||||||||

Inserts a new tree element. Assumes the path bits were extracted from a Complexity: O(log n) | |||||||||||||||||||||||

sel :: Int# -> Ordering | |||||||||||||||||||||||

goL :: Int# -> Int# | |||||||||||||||||||||||

goR :: Int# -> Int# | |||||||||||||||||||||||

Produced by Haddock version 0.7 |