The book points out this:
When dealing with cells: if you need to initiate a state change from a cell primitive, you
should be using streams, not cells.
With that in mind, what's the standard way to update a cell algorithmically?
The closest example I could find might be the bouncing ball which uses streams as the starting point:
StreamLoop sBounceX = new StreamLoop<>();
StreamLoop sBounceY = new StreamLoop<>();
Cell velx = sBounceX.hold(new Signal(t0, 0, 0, 350));
Cell vely = sBounceY.hold(gravity.integrate(0));
In other words, even where there's no real source of events - the flow is always stream->cell and updating the cell should be done by updating the stream (either via events or direct code-driven send() on the stream's sink) ?
To clarify a bit more: it seems that Cell does have a send() function as well - but creating a Cell requires either creating it as a constant, or via hold() from a stream (or from some other pre-existing cell) - those are the only two ways right?