Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/takikawa/tr-pfds

Typed Racket data structure libraries
https://github.com/takikawa/tr-pfds

racket typed-racket

Last synced: 10 days ago
JSON representation

Typed Racket data structure libraries

Awesome Lists containing this project

README

        

Functional Data Structures for Typed Racket
===========================================

[![Build Status](https://travis-ci.org/takikawa/tr-pfds.svg?branch=master)](https://travis-ci.org/takikawa/tr-pfds)
[![Scribble](https://img.shields.io/badge/Docs-Scribble-blue.svg)](https://docs.racket-lang.org/functional-data-structures/index.html)

This library provides several functional data structures based on the work
of Chris Okasaki and Phil Bagwell. Click the badge above the documentation.

The original library was implemented by Hari Prashanth.

How to install
--------------

Use one of:

* `raco pkg install pfds`

or

* `git clone git://github.com/takikawa/tr-pfds.git`
* `raco pkg install tr-pfds/`

On Racket v5.3.1 or older, use `raco` to link this repository as
a Racket collection. Here are step-by-step instructions:

* `git clone git://github.com/takikawa/tr-pfds.git`
* `cd tr-pfds/pfds`
* `raco link .`
* `raco setup pfds`

This will link the `pfds` folder as a collection called `pfds`.
Then you can require, for example, the Bankers Deque by using
`(require pfds/deque/bankers)`.

Data structures
---------------

The following data structures are implemented:

* Deques
+ Bankers Deque `pfds/deque/bankers`
+ Implicit Deque `pfds/deque/implicit`
+ Real-Time Deque `pfds/deque/real-time`
* Heaps
+ Binomial Heap `pfds/heap/binomial`
+ Skew Binomial Heap `pfds/heap/skew-binomial`
+ Leftist Heap `pfds/heap/leftist`
+ Splay Heap `pfds/heap/splay`
+ Pairing Heap `pfds/heap/pairing`
+ Lazy Pairing Heap `pfds/heap/lazy-pairing`
+ Bootstrapped Heap `pfds/heap/bootstrapped`
* Queues
+ Bankers Queue `pfds/queue/bankers`
+ Physicist's Queue `pfds/queue/physicists`
+ Hood-Melville Queue `pfds/queue/hood-melville`
+ Implicit Queue `pfds/queue/implicit`
+ Real-Time Queue `pfds/queue/real-time`
* Random Access Lists
+ Binary Random Access List `pfds/ralist/binary`
+ Skew Binary Random Access List `pfds/ralist/skew`
* Catenable List `pfds/catenable-list`
* VList `pfds/vlist`
* Streams `pfds/stream`
* Red-Black Trees `pfds/red-black-tree`
* Tries `pfds/trie`
* Treap `pfds/treap`