This has strayed a touch off topic, but there have been some interesting questions that have been brought up (both here and in direct messages to me) that are worth some re-evaluating some of this pitch.
-
How will the application of type wrappers inter-play? Do macros make more sense as a solution?
Provisionally I think that with declaration macros we might have a more apt solution) -
How can we handle observations of computed properties?
Macros have some hope for making this more of a reality without needing additional support as often; lessening the ramp of the progressive disclosure to more advanced topics -
How can we handle observation of sets of properties?
This seems like something that can be done via field sets. I have some local drafts to do precisely this, however it changes the observer to no longer be type level generic upon the member but function level generic on the member. -
Can actors or even structures participate in observation?
Type wrappers don't really support this, but macros seem to have a path forward for this. Which to me signals this is perhaps the right move. -
Do we need to have both leading and trailing edge (i.e. both will and did set events)? Can it be reasonably expressed as one singular event?
As it stands we only need the leading edge (willSet). Perhaps it would be helpful if folks that have distinct need fordidSetside changes to offer some concrete examples of usages of why observing on that side of the signal is useful (and ONLY solvable bydidSetside observation). -
Can change events be triggered for dependent key paths? e.g. the key paths effecting key paths APIs
This seems to be possible. It might need some alteration to theObservationListAPI. -
Do observers need to be specifically generic upon the member values? or can they be function level generic on the change and only type level generic upon the observable they are about?
Yes; see item 3 for details.