I strongly feel a Behavior should simply be implemented as a side effecting cached thunk, that clears its cache at the end of transaction. It would still allow all the API to be implemented for a Behavior.
And would allow us to do this: (Java)
Behavior<Long> timeMs = Behavior.fromEffect(System::currentTimeMillis);
Which feels very clean to me.
It also significantly reduces noise in the network as apposed to being implemented like a Cell with a few less methods.
Now Cell to Behavior, not a problem:
Behavior<String> ba = Behavior.fromEffect(ca::sample);
The rationale behind this implementation is:
To losslessly push a true continuous value requires infinite CPU. However it takes finite CPU to just poll/sample that continuous value every now and again.