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-08 ~ 0.3.0