Summary
In this chapter, we have learned to build distributed systems using the Cloud Haskell platform: launching nodes and processes, communicating via direct message passing between processes and with more flexible typed channels, passing remotely executed procedures in closures, and handling failure with process linking and monitoring. You now know how to build distributed systems with Cloud Haskell.
The next chapter will be about Functional Reactive Programming (FRP) and related Haskell libraries. Reactive programming, and especially FRP, challenges prevalent imperative control flow by a different notion of time. In imperative animation, for instance, timing is more or less implicit in the code, whereas in FRP, time would be just one more argument or input to an animation system. Reactive programming extends beyond just animation, though.