Wow, just tripped over my own code in support of filters, aka synapses. I think I have to make a change.
I manage to eliminate Synapses as distinct objects by /always/ interpreting the second of possibly multiple returned values as a "propagate?" indicator. I thought this would be OK since a slot can hold only one value. But!
(c? (floor (^length) 2))
...ends up feeding the "propagate?" interpretation, so it turned we all have been getting unnecessary propagation where we innocently returned multiple values and the second was non-nil.
My proposed solution is to make the kludge even worse. :) A cell acting in the role of a synapse/filter will have to return 'cells::propagate-yes, 'cell::propagate-no, or (I think there was a third value). Only those will be meaningful. Anything else gets thrown away.
Thoughts? Alternatives?
kt