Skip to content

0-8-15/llrb-syntax

Repository files navigation

[[tags: egg]]
== llrb-syntax

A syntax-rules macro expanding into left-leaning red-black tree code.
Pure and mutating versions.

== Overview

A left-leaning red–black (LLRB) tree is a type of self-balancing binary search tree.
It is a variant of the red–black tree and guarantees the same asymptotic complexity for operations.
[wikipedia].

The macro is independent of data structures used to implement nodes of
the trees.  Users must pass accessors and a syntax or procedure to
update an existing node (for the mutating version) respectively create a fresh node
as well as names for the procedures to be defined.

== Examples

See the llrb-tree egg.

== API

<syntax>define-llrbtree/positional
(FEATURES)
UPDATE
init-root-node!		;; defined
t-lookup		;; defined
t-min			;; defined
t-fold			;; defined
t-for-each		;; defined
t-insert		;; defined
t-delete		;; defined
t-delete-min		;; defined
t-empty?		;; defined

;; These syntax is used expand to code for comparision
;; expressions.
t-k-eq?			;; key<>node-key "equal"
t-eq?			;; node-key<>node-key "equal"
t-k-<?			;; key<>node-key "less then"
t-<?			;; node<>node "less then"
;; Accessors to the elements of the tree.
left
right
color
</syntax>

FEATURES: {ordered, pure, leftmost} – configures the generated code.

UPDATE

The "update*" syntax must accept a node structure and
key-value pairs.  Keys are color:, left: and right:

"update" : If feature "pure" is set, "update" must expand
to a newly allocated node, otherwise is MUST expand to a
side effect full update of the original node.

About

Expands LLRB code customized to data structures.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages