Following along John De Goes' course on Functional Programming in Scala.
You will need docker, then run
$ make build
$ makeThen in the Docker vm run
$ ./sbt
sbt:Functional Scala> ~ compileand code outside, code will be in sync.
Composition. Type soundness.
It's impressive how things compose so nicely once you lift the discussion into monoids.