Reactive programming
In Chapter 9, Composing Visual Interfaces, we saw how easy it is to handle events on widgets by attaching actor code blocks. We encountered several examples where a change or action in one face influenced another face—for example, clicking a button changes a text in a field. The text field reacted to the button because we explicitly coded an actor on the button.
Look at the following code snippet:
;-- see Chapter10/reactive1.red: point: [x: 3 y: 5] distance: square-root (point/x **2) + (point/y **2) print distance ;== 5.8309518948453 point/x: 2 print distance ;== 5.8309518948453 <-- doesn't change! distance: square-root (point/x **2) + (point/y **2) print distance ;== 5.385164807134504 <-- changed
The distance
word gives the distance of point
to the origin, but when the point's coordinates change, distance
does not change automatically with it. Only when distance
is asked to calculate itself again after the change do we get an updated result.
You can imagine...