DESCRIPTION
Most software applications must handle user or system-generated events. The most widely-accepted event handling model is the Observer pattern, in which an object "listens" for changes in the application's state and then reacts by executing a unit of code—the problems is that this approach is prone to bugs.
Functional Reactive Programming (FRP) is an alternative to the Observer pattern. It’s designed to deal with events as a stream of values over time rather than as a series of unique responses to discrete changes in state, keeping logic tidy and eliminating the bugs that plague event handling code with no loss of expressiveness. FRP is useful anywhere the Observer pattern is common, including user interfaces, video games, networking, and industrial applications.
Functional Reactive Programming teaches the concepts and applications of FRP. It begins with a careful walk-through of the FRP core operations and introduces the concepts and techniques needed to use FRP in any language. Following easy-to-understand examples, readers will learn how to use FRP in greenfield applications and how to refactor existing applications. Along the way, the book introduces the basics of functional programming in a just-in-time style, so readers never learn anything before they need to use it. By the end of the book, readers will be able to use FRP to spend more time adding features and less time fixing problems.
KEY SELLING POINTS
Step by step guide to developing FRP applications
Think differently about data and events
Spend less time fixing problems and more time adding features
AUDIENCE
This book presents examples in Java, C++, and JavaScript using the Sodium, Flapjax, and BaconJS libraries. No prior experience with functional programming is required.
ABOUT THE TECHNOLOGY
Reactive programming is a broad concept, where programs are event-based and viewed as a data flow. Functional Reactive Programming is a specific type of reactive programming that improves the quality of interactive applications, allowing developers to spend more time adding features and less time fixing problems.