This repo is created for newbies which helps in jump starting with Scala. This follows Cross-dimensional approach of learning functional reactive Programming with Scala.
This contains gist of every concepts and also the resources for reference.
- Explain the importance and necessity of Functional reactive programming (FRP)
- Why to choose Scala for FRP
- Go through the basic constructs in Scala
- Attempting and Completing all
S-99: Ninety-Nine Scala Problems
- Implementing every FRP concepts & paradigm
- Talking about the Top frameworks in Scala
- Create a enterprise application
- Develop frameworks in Scala for scalability
Functional programming (often abbreviated FP) is the process of building software by composing pure functions, avoiding shared state, mutable data, and side-effects. Functional programming is declarative rather than imperative, and application state flows through pure functions. Contrast with object oriented programming, where application state is usually shared and co-located with methods in objects.
Functional programming is a programming paradigm, meaning that it is a way of thinking about software construction based on some fundamental, defining principles (listed above). Other examples of programming paradigms include object oriented programming and procedural programming.
Solve Concurrency and Parallelism
With the features of functional programming paradigm, Concurrency and Parallelism comes by default.
Below are few key features of Functional Programming
First-Class Functions High-Order Functions Pure Functions Closures Immutable State
Reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming language(s), and that an inferred dependency within the associated execution model exists, which facilitates the automatic propagation of the change involved with data flow.
Reactive Programming is programming with asynchronous data streams. Observables can be cold or hot – and it matters. Misused asynchrony bites Keep things simple
- https://dzone.com/articles/only-introduction-reactive
- https://developers.redhat.com/blog/2017/06/30/5-things-to-know-about-reactive-programming/
Reactive programming is achieved through Event based architecture.
Functional reactive programming (FRP) is a programming paradigm for reactive programming (asynchronous dataflow programming) using the building blocks of functional programming (e.g. map, reduce, filter). FRP has been used for programming graphical user interfaces (GUIs), robotics, and music, aiming to simplify these problems by explicitly modeling time.[citation needed]
Functional Reactive Programming (FRP) integrates time flow and compositional events into functional programming. This provides an elegant way to express computation in domains such as interactive animations, robotics, computer vision, user interfaces, and simulation.
- http://blog.danlew.net/2017/07/27/an-introduction-to-functional-reactive-programming/
- https://wiki.haskell.org/Functional_Reactive_Programming
- https://medium.com/@cesarmcferreira/why-you-should-be-doing-functional-reactive-programming-858bd9bb8001
- https://medium.com/@kuassivi/functional-reactive-programming-with-rxjava-part-1-dc33aa9b5492
- https://android.jlelse.eu/how-to-wrap-your-imperative-brain-around-functional-reactive-programming-in-rxjava-91ac89a4eccf
FRP is a paradigm which implements both functional and reactive approach of programming together.
Scala, as a functional language, has been given the tools necessary to go reactive, making concurrency and distribution easier and giving a nice and elegant way to asynchronous programming.
- https://hackernoon.com/functional-programming-what-language-should-you-be-talking-313dd8bc379b
- http://crscardellino.me/2014/08/11/why-did-i-choose-scala.html
- https://www.quora.com/Should-I-use-Scala-instead-of-Haskell-to-learn-functional-programming-as-Scala-is-more-widely-used-and-practical
- https://www.quora.com/I-want-to-learn-a-functional-language-Which-one-is-the-best-Scala-Clojure-etc-and-why
Higher Productivity & Quality Better Developers Rapidly Improving Ecosystem
Learning Curve Limited Developer Pool Better Developers Limited Commercial Support Tool Immaturity