This is a collection of :
- scala scripts copied from various sources or implemented by myself while I was learning scala
- links to various projects, tutorials, plugins
- Programming Scala 2nd edition by Dean Wampler and Alexy Payne
- Programming in Scala by Martin Odersky
- Scala with Cats by Noel Welsh and Dave Gurnell (free e-book)
- Scala in depth by Josh Suereth
- Access Modifiers in Scala
- Guide to Scala Collections
- Effective scala
- Variance
- Scala cheatsheet as jupyter notebook
- Collection guide
- Collections tips and tricks
- Conversions between Java and Scala collections
- Stream vs. View vs. Iterator
- Performance comparison
- Scala best practices by Nicolas Rinaudo
- Scala best practices by Alexandru Nedelcu
- Scala style guide at scala.com
- Scala style guide at databrics
- Strategic Scala Style: Principle of least power
- Design Patterns
- Scala exercises for std lib, cats, doobie, fp in scala maintained by Underscore.io
- 99 problems in scala
- LiHaoyi's handson scala
- scalastyle - the equivalent of checkstyle for scala (eclipse, intellij, maven, gradle)
-
common code in package objects
-
function vs. method
-
function composition
-
structural types (duck typing), existential types
-
more on variance :
- contravariance example,
- why immutable -> covariant and mutable -> invariant
- type bounds vs. variance ( they're unrelated issues)
-
patterns:
- stackable traits,
- type class,
- evidence class,
- cake pattern
-
collections:
- Builder, CanBuildFrom, MapLike, SeqLike
- BigO reference for common methods in common implementations
-
case classes : unapply && unapplySeq
-
uniform access principle
-
abstract types
-
abstract types vs. parameterized types (generics)
-
self type annotations
-
override required and non-required
-
traits can extend objects
-
infix types
-
unit type
-
referential transparency ( see : https://pierangeloc.github.io/blog/2018/06/01/on-RT-and-FP )
-
path dependent types
-
type ascription
-
TypeTag, ClassTag and WeakTypeTag (see: https://medium.com/@sinisalouc/overcoming-type-erasure-in-scala-8f2422070d20)
-
Improve variance examples (see: https://www.benjamin.pizza/posts/2019-01-11-the-fourth-type-of-variance.html)
-
F bounded types (see : http://tpolecat.github.io/2015/04/29/f-bounds.html )
-
Other type bounds ( see : https://twitter.github.io/scala_school/advanced-types.html )
-
improve partial functions ( see : https://blog.bruchez.name/2011/10/scala-partial-functions-without-phd.html )