1. Functional Programming in Scala - Gaoey/scala-diary GitHub Wiki
functional programming is a restriction on how we write programs, but not on what programs we can express. That's mean How we write programming without side effects or - we construct our programs using only pure functions
side effect is does something in the function other than simply return exact results Example: perform I/O, handle errors, and modify data.
Benefit
- Modularity - effective of pure function -> easy to test, reuse, parallelize and less bug
Fundamental
- Pure Function
- Tail Recursion
- Higher Order Function
- Curry Function
- Partially Applied Functions
- Anonymous Function
- Type in Scala
- Functor, Monoid and Monad
- Inheritance
- Polymorphism
- Error Handling
Functional Data Structure
- Pattern Matching
- Trees
Other
- Circe - Json API