use(require(“atomy”))
data = require(“anatomy/data”)
def(pass(a & Array, info)):
a collect [x]: pass(x, info)
def(pass(x & (data TraverseBlock | data TraverseElement), info)):
new = x action[info] when(new != x): signal(.changed) new
def(pass(x, _)): x
def(over(part)):
info = #{} changed? = true while(changed?): &changed? = false (part body = pass(part body, info)) bind: .changed: &changed? = true part parts each [p]: over(p) part