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