# type-safe-avl: Type safe BST and AVL trees

Several implementations of type-safe binary search trees (BST) and balanced binary search trees (AVL).

These differ on how the structural invariants are implemented at the type level.

Each of them have their own advantages and disadvantages.

This library shows different ways of implementing invariants at the type level, each of them providing different features, all of them enforced at compile time:

Data invariant verification: assert at compile time if any given tree is BST/AVL.

Program certification: verify at compile time if the implementation of the operations over BST/AVL trees preserves the order of the keys and the balance in the heights.

Type-safe data constructors: implementation of tree constructors that throw an error at compile time if the tree being constructed is not BST/AVL.

[Skip to Readme]

## Modules

[Index] [Quick Jump]

*Data**Tree**AVL*- Data.Tree.AVL.Extern
- Data.Tree.AVL.FullExtern
- Data.Tree.AVL.FullExtern.Examples

- Data.Tree.AVL.Intern
- Data.Tree.AVL.Invariants
- Data.Tree.AVL.Unsafe
- Data.Tree.AVL.Unsafe.Examples

*BST*- Data.Tree.BST.Extern
- Data.Tree.BST.FullExtern
- Data.Tree.BST.FullExtern.Examples

- Data.Tree.BST.Intern
- Data.Tree.BST.Intern.Constructors
- Data.Tree.BST.Intern.Delete
- Data.Tree.BST.Intern.Examples
- Data.Tree.BST.Intern.Insert
- Data.Tree.BST.Intern.Lookup

- Data.Tree.BST.Invariants
- Data.Tree.BST.Unsafe
- Data.Tree.BST.Unsafe.Examples

- Data.Tree.BST.Utils

- Data.Tree.ITree
- Data.Tree.Node

## Downloads

- type-safe-avl-1.0.0.1.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

#### Maintainer's Corner

For package maintainers and hackage trustees

Candidates

- No Candidates

Versions [RSS] | 1.0.0.0, 1.0.0.1 |
---|---|

Change log | CHANGELOG.md |

Dependencies | base (>=4.15.0.0 && <4.16) [details] |

License | GPL-3.0-only |

Author | Nicolás Rodríguez <marco.nicolas.rodriguez@protonmail.com> |

Maintainer | Nicolás Rodríguez <marco.nicolas.rodriguez@protonmail.com> |

Revised | Revision 1 made by nico at 2022-08-14T21:45:51Z |

Category | Data |

Home page | https://github.com/nico-rodriguez/type-safe-avl |

Bug tracker | https://github.com/nico-rodriguez/type-safe-avl/issues |

Source repo | head: git clone https://github.com/nico-rodriguez/type-safe-avl |

Uploaded | by nico at 2022-05-31T02:19:43Z |

Distributions | |

Downloads | 150 total (3 in the last 30 days) |

Rating | (no votes yet) [estimated by Bayesian average] |

Your Rating | |

Status | Docs uploaded by user Build status unknown [no reports yet] |