Scala

Scala combines object-oriented and functional programming in one concise, high-level language.

This is a four day Scala course loosely based off Google’s Comprehensive Rust. The course will attempt to cover the full spectrum of Scala 3, from basic syntax to advanced topics like higher-kinded types, effect libraries and tagless final style programs.

Goals

The goals of the course is to get you to a working understanding of advanced Scala. In this course I will assume you don’t know anything about Scala and I hope to:

  • Give you a rough understanding of Scala’s advanced features
  • Enable you to read and contribute to Scala programs that use these features
  • Hopefully convince you that writing software like this is productive, rewarding and all around fun 😹

Non-Goals

Unless you already have experience with other FP languages like Haskell, it is probably going to take more than a few days to completely learn Scala. So some non-goals of this course are:

Assumptions

This course assumes that you already know how to program. Scala is a statically typed language and there might be some comparative references to Haskell but I will also try to use TypeScript in-case that’s easier.

You don’t have to know functional programming, but it will be the primary paradigm used in this course.


Course Structure

TODO: Describe

sbt

sbt is a build tool that is designed to make it easy to manage the compilation, testing, and distribution of JVM code. It is the most widely used of the build tools for Scala projects. sbt uses a simple, declarative syntax for defining the dependencies and tasks needed to build a Scala project, and it provides a set of built-in tasks for common build operations such as compiling code, running tests, and packaging code for deployment. sbt is designed to be easy to use and highly extensible, and it is widely used in the Scala community for building and managing Scala projects.

Day 1

TODO: describe


Last modified January 4, 2023: More scaffolding... (bb549c8)