aristidb / sequential-index

[Haskell] Sequential index numbers between 0.0 and 1.0 that allow arbitrarily inserting new numbers in between (for special containers).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sequential index numbers between 0.0 and 1.0 that allow arbitrarily inserting new numbers in between. They can possibly used for disk-based and other special containers, where adding a new element without changing the indexes of the other elements is important.

Conceptually, SequentialIndex denotes a path to an element in an imaginary binary tree, with a '1' at the end. Except for 0.0 and 1.0, which are logically on the left or on the right of the entire tree.

So logically, the tree looks roughly like this:

0.0                          1.0
                            /
                /----------/
              0.1
              / \
          /--/   \--\
         /           \
       0.01         0.11
       / \          / \
  0.001   0.011     ...

Note that 0.0 is not connected to any other node, but it is still logically smaller than all nodes.

About

[Haskell] Sequential index numbers between 0.0 and 1.0 that allow arbitrarily inserting new numbers in between (for special containers).

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Haskell 100.0%