# persistent-vector: A persistent sequence based on array mapped tries

This package provides persistent vectors based on array mapped tries. The implementation is based on the persistent vectors used in clojure, but in a Haskell-style API. The API is modeled after Data.Sequence from the containers library.

Technically, the element-wise operations are O(log(n)), but the underlying tree cannot be more than 7 or 8 levels deep so this is effectively constant time.

One change from the clojure implementation is that this version supports
O(1) slicing, though it does cheat a little. Slices retain references
to elements that cannot be indexed. These extra references (and the space
they occupy) can be reclaimed by `shrink`

ing the slice. This seems like
a reasonable tradeoff, and, I believe, mirrors the behavior of the vector
library.

Highlights:

O(1) append element, indexing, updates, length, and slicing

Reasonably compact representation

[Skip to Readme]

Versions [faq] | 0.1.0.0, 0.1.0.1, 0.1.0.3, 0.1.1 |
---|---|

Dependencies | base (==4.*), deepseq [details] |

License | BSD-3-Clause |

Author | Tristan Ravitch |

Maintainer | tristan@nochair.net |

Category | Data |

Home page | https://github.com/travitch/persistent-vector |

Bug tracker | https://github.com/travitch/persistent-vector/issues |

Source repo | head: git clone git://github.com/travitch/persistent-vector.git |

Uploaded | by TristanRavitch at 2015-04-22T03:37:26Z |

Distributions | NixOS:0.1.1 |

Downloads | 2635 total (58 in the last 30 days) |

Rating | 2.0 (votes: 1) [estimated by Bayesian average] |

Your Rating | |

Status | Docs available [build log] Last success reported on 2015-04-22 [all 1 reports] |

## Downloads

- persistent-vector-0.1.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)