* iOSCon, March 2017: https://skillsmatter.com/skillscasts/9610-keynote-do-it-yourself-functional-reactive-programming (login required)
* Sydney CocoaHeads, May 2017: https://vimeo.com/222165406/972d7d714e
Swift’s strong functional programming support leads to a lot of interest in adapting functional programming techniques to writing Cocoa applications. In particular, functional reactive programming (FRP) promises to replace unstructured side effects by structured change propagation in response to user input, network events, sensor activity, and similar.
Typically explained by way of sophisticated, but often also complex functional reactive programming frameworks, such as ReactiveCocoa and RxSwift, it can be difficult to see the simple principles underlying functional reactive programming. In fact, these principles are sufficiently simple that we can explain them by building a functional reactive programming library from scratch.
In this talk, I will illustrate how we can construct our own lightweight functional reactive programming library out of simple components using Swift’s support for protocol-oriented programming. Moreover, I will discuss how to use this library to design and implement the change propagation between the model and view components of a Cocoa app. All of this is illustrated with concrete Swift code taken from a simple iPhone application whose source code will be made available.