@jsoldi/hkt
Version:
Higher kinded types for typescript and a few utility monads.
18 lines • 573 B
JavaScript
import { chain, id } from "../core/utils.js";
const is_traversable = Symbol("is_traversable");
/** Creates an `ITraversable` from an `ITraversableBase`. */
export function traversable(base) {
if (is_traversable in base)
return base;
const sequence = (m) => base.traverse(m)(id);
const nestTraversable = (g) => traversable({
traverse: m => chain(g.traverse(m), base.traverse(m))
});
return {
...{ [is_traversable]: true },
sequence,
nestTraversable,
...base
};
}
//# sourceMappingURL=traversable.js.map