pfds 0.3.0
Purely Functional Data Structures
pfds is a set of purely functional data structures written in R6RS Scheme. It has been tested with Racket, Guile 2, Vicare Scheme and IronScheme. Right now it contains: queues, deques, bbtrees, sets, dlists, priority search queues (psqs), finger trees, sequences, heaps, hamts; with more to come, time permitting.
$ akku update $ akku install pfds $ .akku/env
Authors
Ian Price
Uploaded to Akku by Göran Weinholt
Homepage
Information missing.
License
BSD-3-Clause
Dependencies
No dependencies.
Source code
https://github.com/ijp/pfds.git git
454033f82dac7c0b0ea9e84eed1e8ed316487c78
Tag: v0.3
Package contents
- (pfds bbtrees) R6
- → make-bbtree bbtree? bbtree-size bbtree-ref bbtree-set bbtree-update bbtree-delete bbtree-contains? bbtree-ordering-procedure bbtree-traverse bbtree-fold bbtree-fold-right bbtree-map bbtree->alist alist->bbtree bbtree-keys bbtree-union bbtree-difference bbtree-intersection bbtree-index bbtree-ref/index
- ← (rnrs) R6
- (pfds deques naive) R6
- → make-deque deque? deque-length deque-empty? enqueue-front enqueue-rear dequeue-front dequeue-rear deque-empty-condition? deque->list list->deque
- ← (rnrs) R6
- ← (pfds deques private condition)
- (pfds deques private condition) R6 Internal
- → &deque-empty make-deque-empty-condition deque-empty-condition?
- ← (rnrs conditions) R6
- (pfds deques) R6
- → make-deque deque? deque-length deque-empty? enqueue-front enqueue-rear dequeue-front dequeue-rear deque-empty-condition? deque->list list->deque
- ← (rnrs) R6
- ← (pfds deques private condition)
- ← (pfds private lazy-lists)
- (pfds dlists) R6
- → dlist dlist? dlist-cons dlist-snoc dlist-append dlist->list list->dlist
- ← (rnrs) R6
- (pfds fingertrees) R6
- → fingertree? fingertree-empty? make-fingertree fingertree-cons fingertree-snoc fingertree-uncons fingertree-unsnoc fingertree-append list->fingertree fingertree->list fingertree-measure fingertree-split fingertree-split3 fingertree-fold fingertree-fold-right fingertree-reverse fingertree-empty-condition?
- ← (rnrs) R6
- (pfds hamts) R6
- → make-hamt hamt? hamt-size hamt-ref hamt-set hamt-update hamt-delete hamt-contains? hamt-equivalence-predicate hamt-hash-function hamt-fold hamt-map hamt->alist alist->hamt
- ← (rnrs) R6
- ← (pfds private vectors)
- ← (pfds private alists)
- ← (pfds private bitwise)
- (pfds heaps) R6
- → make-heap heap heap? heap-size heap-empty? heap-min heap-delete-min heap-insert heap-pop heap->list list->heap heap-merge heap-sort heap-ordering-procedure heap-empty-condition?
- ← (rnrs) R6
- (pfds private alists) R6 Internal
- → alist-ref alist-set alist-delete alist-update
- ← (rnrs base) R6
- ← (srfi :1 lists) SRFI
- (pfds private bitwise) R6 Internal
- → bitwise-bit-set bitwise-bit-unset
- ← (rnrs base) R6
- ← (rnrs arithmetic bitwise) R6
- (pfds private lazy-lists) R6 Internal
- → cons* tail head empty? take drop rev append*
- ← (rnrs) R6
- ← (rnrs r5rs) R6
- (pfds private vectors) R6 Internal
- → vector-set vector-insert vector-remove vector-copy vector-copy! vector-fold
- ← (rnrs base) R6
- ← (rnrs control) R6
- (pfds psqs) R6
- → make-psq psq? psq-empty? psq-size psq-ref psq-set psq-update psq-delete psq-contains? psq-min psq-delete-min psq-pop psq-at-most psq-at-most-range
- ← (rnrs) R6
- (pfds queues naive) R6
- → make-queue queue? queue-length queue-empty? enqueue dequeue queue-empty-condition? list->queue queue->list
- ← (rnrs) R6
- ← (pfds queues private condition)
- (pfds queues private condition) R6 Internal
- → &queue-empty make-queue-empty-condition queue-empty-condition?
- ← (rnrs conditions) R6
- (pfds queues) R6
- → make-queue queue? queue-length queue-empty? enqueue dequeue queue-empty-condition? list->queue queue->list
- ← (rnrs) R6
- ← (pfds private lazy-lists)
- ← (pfds queues private condition)
- ← (rnrs r5rs) R6
- (pfds sequences) R6
- → make-sequence sequence? sequence-empty? sequence-size sequence-cons sequence-uncons sequence-snoc sequence-unsnoc sequence-append list->sequence sequence->list sequence sequence-split-at sequence-take sequence-drop sequence-ref sequence-set sequence-fold sequence-fold-right sequence-reverse sequence-map sequence-filter sequence-empty-condition?
- ← (rnrs) R6
- ← (pfds fingertrees)
- (pfds sets) R6
- → set? make-set set-member? set-insert set-remove set-size set<? set<=? set=? set>=? set>? subset? proper-subset? set-map set-fold list->set set->list set-union set-intersection set-difference set-ordering-procedure
- ← (rnrs) R6
- ← (pfds bbtrees)
- (pfds tests bbtrees) R6 Test
- → bbtrees
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds bbtrees)
- (pfds tests deques) R6 Test
- → deques
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds deques)
- (pfds tests fingertrees) R6 Test
- → fingertrees
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds fingertrees)
- (pfds tests hamts) R6 Test
- → hamts
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds hamts)
- (pfds tests heaps) R6 Test
- → heaps
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds heaps)
- (pfds tests psqs) R6 Test
- → psqs
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds psqs)
- (pfds tests queues) R6 Test
- → queues
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds queues)
- (pfds tests sequences) R6 Test
- → sequences
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds sequences)
- (pfds tests sets) R6 Test
- → sets
- ← (rnrs) R6
- ← (wak trc-testing)
- ← (pfds tests utils)
- ← (pfds sets)
- (pfds tests utils) R6 Test
- → pfds test test-not test-exn test-no-exn add1 foldl iota
- ← (rnrs) R6
- ← (wak trc-testing)
Version history
- 2018-04-07 ~ 0.3.0