keyvanakbary / medusa
Immutable and persistent collections
Installs: 453
Dependents: 0
Suggesters: 0
Security: 0
Stars: 154
Watchers: 9
Forks: 13
Open Issues: 0
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-12-21 17:32:58 UTC
README
Immutable and persistent collections for PHP.
Life would be a lot simpler if we had immutable data structures. Code would be easier to understand, easy to test and free of side-effects. Being immutable is not all, these data structures must be efficient. By making them persistent, collections reuse internal structure to minimize the number of operations needed to represent altered versions of an instance of a collection.
Installation
To install this library, run the command below and you will get the latest version
composer require keyvanakbary/medusa
Usage
Persistent Stack
$s = Medusa\Stack\PersistentStack::createEmpty(); $s1 = $s->push(1); $s2 = $s1->pop(); echo $s1->peek();//1 echo $s2->peek();//Runtime exception
Complexity
Persistent Queue
$q = Medusa\Queue\PersistentQueue::createEmpty(); $q1 = $q->enqueue(1); $q2 = $q1->dequeue(); echo $q1->peek();//1 echo $q2->peek();//Runtime exception
Complexity
Persistent AVL Tree
$t = Medusa\Tree\PersistentAvlTree::createEmpty(); $t1 = $t->add(1, 'one'); $t2 = $t1->remove(1); echo $t1->search(1)->value();//one echo $t2->lookup(1);//Runtime exception
Complexity
Persistent Red-Black Tree
$t = Medusa\Tree\PersistentRedBlackTree::createEmpty(); $t1 = $t->add(1, 'one'); $t2 = $t1->remove(1); echo $t1->search(1)->value();//one echo $t2->lookup(1);//Runtime exception