Code written while playing with the concepts covered in Advanced Scala Course offered on https://rockthejvm.com/p/advanced-scala.
The main topics covered are residing in lectures
and exercises
folders in AdvancedScalaDoodle/src/main/scala/
. Both lectures and notes contain my comments and testing out various concepts in Scala language. The exercises contain full problem specification and my solution offered.
- "Dark" Syntax Sugars
- single parameter methods
- lambda reductions
::
and#::
methods- multi-word method naming
- some "generic's" features
- update and setters
- Advanced Pattern Matching
- matching classes that are not
case class
: the unapply method overloading - infix patterns - decomposing sequences - custom return types forunapply
- Partial Functions
- Functional Sets
- Streams
- Currying with Partially Applied Functions
- Lazy evaluations
- Monads (with exercises)
- Parallelism on the JVM
- Concurrency problems on the JVM
- JVM thread communication, the producer-consumer problem
- Futures and Promises
- Scala & JVM Standard Parallel Libraries
- Implicits overview
- Organizing Implicits
- Type Classes
- "Pimp my library" pattern
- JSON serialization with implicits (exercise)
- Scala <> Java conversions with implicits
- Advanced Inheritance
- Veriance: Invariance, Covariance, Contravariance (+ exercises)
- Type members
- Inner Types
- Structural Types
- Self-types
- F-bounded polymorphisms
- Higher-Kinded Types
- Reflections