io.lacuna.bifurcan.IForkable Maven / Gradle / Ivy
package io.lacuna.bifurcan;
/**
* @author ztellman
*/
public interface IForkable {
/**
* This represents a data structure which can be made forked, which is equivalent to Clojure's persistent
* data structures, also sometimes called functional or immutable. This is called "forked" because it
* means that multiple functions can make divergent changes to the data structure without affecting each other.
*
* If only a single function or scope uses the data structure, it can be left as a linear data structure, which
* can have significant performance benefits.
*
* If the data structure is already forked, it will simply return itself.
*
* @return a forked form of the data structure
*/
T forked();
}