It bucks the conventional understanding of how signals might be used, but it means that we don’t need this distinction.
Conversation
Our view models are a collection of inputs and outputs. Some of which are effectful. All of which are signals.
1
What does it mean for an output to be effectful?
1
e.g., resulting in the presentation of a new view controller, or the view model beginning a network request.
1
OK. How do you express those effects as outputs in the interface?
1
My point is exactly that _you don’t need to_. Why is it important? The effects are an implementation detail.
2
Trying to figure out how this is different from any object which performs effects when it e.g. receives a message.
2
Is the significant point that all endpoints are expressed via signal APIs rather than via methods?
1
Yes. Everything can be treated as a functional series of inputs to outputs. Embedded effects are encapsulated away.
2
1
Here’s one of my favorite examples: github.com/ReactiveCocoa/
I just embedded an animation effect, but it’s the same values.
1
2
Replying to
Man, the embedding of effects makes me super duper uncomfortable. How do you test this stuff? Mocks?
Replying to
Generally, we don’t test any of the effects themselves—they’re usually untestable things. The signals are still testable.
2
(For example, we don’t test animation or layout, but we _could_ verify the layout signal without caring that it animates.)
1

