Closure Sequences
Sequences present a good opportunity: one can map a function over a collection that is the value of some node, and the mapping will be done consistent with the semantics of the engine selected. e.g. the lazy synchronous engine will map the provided function over all elements serially, while the core.async engine will use clojure.core.async/pipeline to run the mapped function over all of the elements in parallel.
However, it had a major drawback: the function was strictly of one element and must be described at the time the environment is defined; the values of other nodes resolved in the environment could not make their way into the function.
Version 1.16.0 of Nodely introduces support for closing over any named node in the mapped function of a sequence node. This can allow for combining every value of a sequence with some other value in the environment (e.g. generate multiple requests based on a single retrieved customer id). This support is tested in every engine, and, Nodely will be backwards compatible with all prior defined environments.
Note: the internal structure of sequence nodes has changed; all syntactic and data functions are fully backwards compatible, but the function to map over the sequence has moved from being a bare function at the :nodely.data/fn key of a sequence node to being either a Leaf or Value Node at the :nodely.data/process-node key