# How to Learn Scala

- [[how to]] [[learn]] [[scala]]
  - [[by]] [[s5bug]]
  - [[quote]] first, learn scala itself:
    - getting started: https://docs.scala-lang.org/getting-started/index.html
    - tour of scala: https://docs.scala-lang.org/tour/tour-of-scala.html
    - scala book: https://docs.scala-lang.org/overviews/scala-book/introduction.html
    - essential scala https://underscore.io/books/essential-scala
    - programming in scala (4th ed.) by martin odersky
    - online tutorial: https://www.scala-exercises.org/scala_tutorial/terms_and_types
    - stdlib exercises: https://www.scala-exercises.org/std_lib/asserts
  - [[quote]] then learn fp:
    - functional programming in scala (2014) by chiusano and bjarnason
      - scala with cats https://scalawithcats.com/
      - herding cats: http://eed3si9n.com/herding-cats
      - exercises: https://www.scala-exercises.org/cats/semigroup
  - [[quote]] further resources:
    - cats website: https://typelevel.org/cats
    - cats-effect website: https://typelevel.org/cats-effect (IO monad for scala)
    - fs2 streaming (for streaming + control flow): https://fs2.co/
    - http4s for http-ing: https://http4s.org/
    - category theory for programmers: https://github.com/hmemcpy/milewski-ctfp-pdf



[//begin]: # "Autogenerated link references for markdown compatibility"
[scala]: scala "Scala"
[s5bug]: s5bug "S5bug"
[quote]: quote "Quote"
[//end]: # "Autogenerated link references"