The code is structured in a very functional style. All data structures are immutable and all the code is declarative. The only imperative-like code comes from using val
assignments to give names to intermediate computations to improve readability.
This is only my second project in Scala, so it's likely to be missing a few conventions and optimisations that could be made.
Overall, I've really enjoyed learning Scala. The standard library for manipulating collections like immutable lists, immutable maps, and optionals has really impressed me, I've very rarely found myself looking for a function and not finding it. I really like case classes and the fact they give you a ton of functionality with no extra code. To do the same thing in Java would be very verbose.