|
| 1 | +# Learn Scala |
| 2 | + |
| 3 | +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. |
| 4 | + |
| 5 | +The list is still incomplete, any additional resources for existing sections or whole sections are welcome, just rise a pull request. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## General trainings and books |
| 10 | + |
| 11 | + - Scala exercises https://www.scala-exercises.org/scala_tutorial/terms_and_types |
| 12 | + - Scala at Light Speed https://www.youtube.com/watch?v=-8V6bMjThNo&list=PLmtsMNDRU0BxryRX4wiwrTZ661xcp6VPM |
| 13 | + - Hands on Scala by Li Haoi https://www.handsonscala.com/chapter-1-hands-on-scala.html |
| 14 | + - Scala with Cats by Underscore https://www.scalawithcats.com/dist/scala-with-cats.html |
| 15 | + - Functional Programming in Scala by Martin Odersky https://www.coursera.org/learn/progfun1 |
| 16 | + - Dev inside you - various scala lessons https://www.youtube.com/channel/UCSBUwLT9zXhUalKfJrc2q2A/videos |
| 17 | + - Strategic Scala Style: Principle of Least Power by Li Haoi https://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html |
| 18 | + - Lightbend Scala Language - Professional https://academy.lightbend.com/courses/course-v1:lightbend+LSL-P-Scala-Language-Professional+v1/about |
| 19 | + |
| 20 | +## Language aspects |
| 21 | + |
| 22 | +### Type system hierarchy |
| 23 | + - https://docs.scala-lang.org/tour/unified-types.html |
| 24 | + - https://www.artima.com/scalazine/articles/scalas_type_system.html |
| 25 | + |
| 26 | +### Case classes |
| 27 | + - https://docs.scala-lang.org/tour/case-classes.html |
| 28 | + - https://docs.scala-lang.org/overviews/scala-book/case-classes.html |
| 29 | + |
| 30 | +### Traits |
| 31 | + - https://docs.scala-lang.org/tour/traits.html |
| 32 | + - https://docs.scala-lang.org/overviews/scala-book/traits-interfaces.html |
| 33 | + |
| 34 | +### Pattern matching |
| 35 | + - https://docs.scala-lang.org/tour/pattern-matching.html |
| 36 | + - https://alvinalexander.com/scala/how-to-use-pattern-matching-scala-match-case-expressions/ |
| 37 | + - https://data-flair.training/blogs/scala-pattern-matching/ |
| 38 | + |
| 39 | +### Option and Either |
| 40 | + - https://xebia.com/blog/try-option-or-either/ |
| 41 | + - https://alvinalexander.com/scala/best-practice-eliminate-null-values-from-code-scala-idioms/ |
| 42 | + - https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-7-the-either-type/ |
| 43 | + |
| 44 | +### Collections, for comprehension |
| 45 | + - https://docs.scala-lang.org/overviews/scala-book/collections-101.html |
| 46 | + - https://docs.scala-lang.org/tour/for-comprehensions.html |
| 47 | + |
| 48 | +### Implicits |
| 49 | + - https://www.artima.com/pins1ed/implicit-conversions-and-parameters.html |
| 50 | + - https://www.lihaoyi.com/post/ImplicitDesignPatternsinScala.html |
| 51 | + - https://scala-fmi.github.io/scala-fmi-2019/lectures/08-implicits.html |
| 52 | + - https://apiumhub.com/tech-blog-barcelona/scala-implicits/ |
| 53 | + |
| 54 | +### Future - asynchronous and parallel operations |
| 55 | + - https://docs.scala-lang.org/overviews/scala-book/futures.html |
| 56 | + - https://docs.scala-lang.org/overviews/core/futures.html |
| 57 | + - https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-8-welcome-to-the-future/ |
| 58 | + |
| 59 | + |
| 60 | +## Advanced Scala usage |
| 61 | + |
| 62 | +### Slick |
| 63 | + - https://scala-slick.org/doc/3.3.1/introduction.html |
| 64 | + - https://books.underscore.io/essential-slick/essential-slick-3.html |
| 65 | + |
| 66 | +### Circe - working with Json |
| 67 | + - https://circe.github.io/circe/ |
| 68 | + |
| 69 | +### IO |
| 70 | + - https://typelevel.org/cats-effect/datatypes/io.html |
| 71 | + - https://typelevel.org/blog/2017/05/02/io-monad-for-cats.html |
| 72 | + - https://medium.com/walmartlabs/understanding-io-monad-in-scala-b495ca572174 |
| 73 | + |
| 74 | +### Type classes |
| 75 | + - https://tpolecat.github.io/2013/10/12/typeclass.html |
| 76 | + - https://scalac.io/typeclasses-in-scala/ |
| 77 | + - https://www.scala-exercises.org/scala_tutorial/type_classes |
| 78 | + |
| 79 | +### Cats |
| 80 | + - https://underscore.io/books/scala-with-cats/ |
| 81 | + - https://typelevel.org/cats/ |
| 82 | + - https://www.scala-exercises.org/cats/semigroup |
| 83 | + |
| 84 | +### Higher-kinded types |
| 85 | + - https://medium.com/bigpanda-engineering/understanding-f-in-scala-4bec5996761f |
| 86 | + - https://dzone.com/articles/scalafp-the-mystery-of-scalas-higher-kinded-types |
| 87 | + - https://www.stephanboyer.com/post/115/higher-rank-and-higher-kinded-types |
| 88 | + |
| 89 | +### Tagless final |
| 90 | + - https://blog.rockthejvm.com/tagless-final/ |
| 91 | + - https://blog.softwaremill.com/final-tagless-seen-alive-79a8d884691d |
| 92 | + - https://blog.softwaremill.com/bake-your-bread-tagless-final-style-dea9448b3dc3 |
| 93 | + - https://www.basementcrowd.com/2019/01/17/an-introduction-to-tagless-final-in-scala/ |
| 94 | + - https://scalac.io/tagless-final-pattern-for-scala-code/ |
| 95 | + |
| 96 | +### FP in general |
| 97 | + - https://github.com/mmenestret/fp-resources |
| 98 | + - http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html |
0 commit comments