Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/polyvariant/learn-scala

Reference learning material for Scala
https://github.com/polyvariant/learn-scala

fp functional-programming learning scala

Last synced: about 2 months ago
JSON representation

Reference learning material for Scala

Awesome Lists containing this project

README

        

# Learn Scala

This repository is intended as a helper for everyone who wants to improve their Scala knowledge, be it beginners or more advanced users. Links in the sections are provided in no specific order.

The list is still incomplete, any additional resources for existing sections or whole sections are welcome, just raise a pull request.

---

## General trainings and books

- Scala exercises https://www.scala-exercises.org/scala_tutorial/terms_and_types
- Scala at Light Speed https://www.youtube.com/watch?v=-8V6bMjThNo&list=PLmtsMNDRU0BxryRX4wiwrTZ661xcp6VPM
- (paid) Rock The JVM https://rockthejvm.com
- (paid, free preview) Hands on Scala by Li Haoi https://www.handsonscala.com/chapter-1-hands-on-scala.html
- Scala with Cats by Underscore https://www.scalawithcats.com/dist/scala-with-cats.html
- Functional Programming in Scala by Martin Odersky https://www.coursera.org/learn/progfun1
- Strategic Scala Style: Principle of Least Power by Li Haoi https://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html
- Lightbend Scala Language - Professional https://academy.lightbend.com/courses/course-v1:lightbend+LSL-P-Scala-Language-Professional+v1/about
- Foundations of Functional Programming in Scala https://www.youtube.com/watch?v=OdPaWmRnAc4&list=PLiYD0LWExCDkXGpYRY3WjNscDfhe4D0ND
- (paid) Inner-product training https://www.inner-product.com/services/training/
- (paid) Zainab Ali's training https://kebab-ca.se/training.html

---

## Blogs, newsletters and channels

- Softwaremill
- Scala Times newsletter https://scalatimes.com/
- Blog https://softwaremill.com/blog/
- Petr Zapletal
- https://petr-zapletal.medium.com/
- Salar Rahmanian
- Scala news https://www.scalanews.net/
- Daniel Ciocîrlan
- https://www.youtube.com/@rockthejvm/videos
- https://blog.rockthejvm.com/
- Jakub Kozłowski
- https://www.youtube.com/@kubukoz_/videos
- https://blog.kubukoz.com/
- Dev inside you
- https://www.youtube.com/@DevInsideYou/videos
- https://devinsideyou.com/
- Li Haoyi
- https://www.lihaoyi.com/
- Michał Pawlik
- https://blog.michalp.net/

---

## Language aspects

### Type system hierarchy

- https://docs.scala-lang.org/tour/unified-types.html
- https://www.artima.com/scalazine/articles/scalas_type_system.html

### Case classes

- https://docs.scala-lang.org/tour/case-classes.html
- https://docs.scala-lang.org/overviews/scala-book/case-classes.html

### Traits

- https://docs.scala-lang.org/tour/traits.html
- https://docs.scala-lang.org/overviews/scala-book/traits-interfaces.html

### Pattern matching

- https://docs.scala-lang.org/tour/pattern-matching.html
- https://alvinalexander.com/scala/how-to-use-pattern-matching-scala-match-case-expressions/
- https://data-flair.training/blogs/scala-pattern-matching/

### Option and Either

- https://xebia.com/blog/try-option-or-either/
- https://alvinalexander.com/scala/best-practice-eliminate-null-values-from-code-scala-idioms/
- https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-7-the-either-type/

### Collections, for comprehension

- https://docs.scala-lang.org/overviews/scala-book/collections-101.html
- https://docs.scala-lang.org/tour/for-comprehensions.html

### Implicits

- https://www.artima.com/pins1ed/implicit-conversions-and-parameters.html
- https://www.lihaoyi.com/post/ImplicitDesignPatternsinScala.html
- https://scala-fmi.github.io/scala-fmi-2019/lectures/08-implicits.html
- https://apiumhub.com/tech-blog-barcelona/scala-implicits/

### Future - asynchronous and parallel operations

- https://docs.scala-lang.org/overviews/scala-book/futures.html
- https://docs.scala-lang.org/overviews/core/futures.html
- https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-8-welcome-to-the-future/

---

## Advanced Scala usage and libraries

### Databases

#### Slick

- https://scala-slick.org/doc/3.3.1/introduction.html
- https://books.underscore.io/essential-slick/essential-slick-3.html

#### Doobie

- https://tpolecat.github.io/doobie/

#### Quill

- https://getquill.io/
- https://zio.dev/zio-quill/
- https://github.com/zio/zio-protoquill

### Working with Json

#### Circe

- https://circe.github.io/circe/

#### Jsoniter Scala

- https://github.com/plokhotnyuk/jsoniter-scala
- https://blog.lambdaspot.dev/the-fastest-and-safest-json-parser-and-serializer-for-scala

### IO

- https://typelevel.org/cats-effect/datatypes/io.html
- https://typelevel.org/blog/2017/05/02/io-monad-for-cats.html
- https://medium.com/walmartlabs/understanding-io-monad-in-scala-b495ca572174

### ZIO

- https://zio.dev/

### Monix

- https://monix.io/

### Messaging

#### pass4s

- https://ocadotechnology.github.io/pass4s/
- https://blog.michalp.net/posts/scala/pass4s-basics/

### Type classes

- https://tpolecat.github.io/2013/10/12/typeclass.html
- https://scalac.io/typeclasses-in-scala/
- https://www.scala-exercises.org/scala_tutorial/type_classes

### Cats

- https://underscore.io/books/scala-with-cats/
- https://typelevel.org/cats/
- https://www.scala-exercises.org/cats/semigroup

### Higher-kinded types

- https://medium.com/bigpanda-engineering/understanding-f-in-scala-4bec5996761f
- https://dzone.com/articles/scalafp-the-mystery-of-scalas-higher-kinded-types
- https://www.stephanboyer.com/post/115/higher-rank-and-higher-kinded-types

### Tagless final

- https://blog.rockthejvm.com/tagless-final/
- https://blog.softwaremill.com/final-tagless-seen-alive-79a8d884691d
- https://blog.softwaremill.com/bake-your-bread-tagless-final-style-dea9448b3dc3
- https://www.basementcrowd.com/2019/01/17/an-introduction-to-tagless-final-in-scala/
- https://scalac.io/tagless-final-pattern-for-scala-code/

### FP in general

- https://github.com/mmenestret/fp-resources
- http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html

### Streaming

#### FS2

- https://fs2.io/

### OAuth2

#### sttp-oauth2

- https://ocadotechnology.github.io/sttp-oauth2/
- https://blog.michalp.net/posts/scala/oauth2-app-p1/