Table of contents : Cover Title Page Copyright and Credits Dedication Packt Upsell Contributors Table of Contents Preface Chapter 1: Getting Started with Reactive and Functional Programming Introduction to Reactive What is Reactive? What is Reactive programming? What is a data stream or stream? RP versus Reactive systems versus Reactive architecture Event-Driven versus Message-Driven Benefits of Reactive systems with RP Functional programming What is functional programming? Principles of functional programming Benefits of functional programming Functional Reactive programming Types of RP. Why FP is the best fit for RPReactive Manifesto Need of Reactive Manifesto Principles of Reactive systems Message-Driven Elasticity Resilience Responsiveness Why Reactive Streams specification? Why is Play Framework the best for Reactive systems? Reactive systems versus traditional systems The Java 9 Flow API Flow API â#x80 #x93 Publisher Flow API â#x80 #x93 Subscriber Flow API â#x80 #x93 Subscription Flow API â#x80 #x93 Processor Flow API â#x80 #x93 Flow Implementations of Reactive Streams Lightbend's Reactive Platform Pivotal's Reactor project Microsoft's Reactive Extensions (RX) Netflix's RxJava. Eclipse's Vert.xRatpack How are Reactive Streams born? Marble diagrams What is a Marble diagram? Data transformation Benefits of Marble diagrams Rules of Marble diagrams Important FRP operators FRP â#x80 #x93 the map() function Marble diagram FRP â#x80 #x93 the flatMap() function Marble diagram FRP â#x80 #x93 the merge() function Marble diagram FRP â#x80 #x93 the filter() function Marble diagram FRP â#x80 #x93 the reduce() function Marble diagram FRP â#x80 #x93 the concat() and sorted() functions Marble diagram Observer pattern versus Reactive pattern Summary Chapter 2: Functional Scala Introduction to Scala. The Scala ecosystemUnderstanding the Scala Application Scala REPL Principles of Scala FP FP Design Patterns Scala FP features in action Immutability Scala functions Scala pure functions Pattern matching Scala combinators For-comprehensions Scala implicits Implicit parameters Implicit conversions Scala anonymous functions Everything is an expression Referential transparency Functions are first-class citizens Partial functions Function currying Higher-Order Functions Scala tail-recursion Types of recursions Benefits of linear recursion A linear-recursion example. Benefits of tail-recursionA tail-recursion example Scala Type class Benefits of Type classes Scala Collections in action Scala List Scala List Cons operator Right associative rule Scala Map Scala Range Scala Functional Design Patterns Scala map() function Scala flatMap() function Advantages of flatMap Scala Monads in action Scala Option Scala Either Scala Case class and object Benefits of Scala Case class Scala Traits in action Trait as an interface Traits linearization Linearization rules Summary Chapter 3: Asynchronous Programming with Scala.