" then as I pointed out, Scala is more complex than Java."
I didn't comment (either way) on this.
I was just trying to say learning type theory worked well for me when I was learning languages with powerful type systems (Haskell in my case), especially in understanding type errors. It may or may not work for you. It is just an experience report/suggestion.
I don't care if Scala is more complex than Java or not. Apologies if you thought I was making a claim to that effect.
Loosely speaking, a c-like English would be: "For each tree in the grove, paint on the stem"
But what would a Scala-like sentence be??? "trees in the grove - paint circles on their stems"???
"For every cookie in the jar; I ate that cookie" vs. "I ate all the cookies from the cookie jar" vs. "The cookie jar is empty"
(the last one assumes that the cookie jar was type-safe and contained nothing but cookies)
I haven't used Scala, but it's certainly a more general rule. Prolog or Make, for example, are damn simple once you understand the model they're based on - they're just fundamentally different from (say) Java or Python. Make has a reputation of being weird and complicated* because people assume its complexity adds to whatever model they're familiar with, but actually it replaces it entirely. Once you understand make's underlying model, everything you need to know to use it would comfortably fit on one page.
* Except the GNU make extensions added to bend gmake into a more 'conventional' tool / make it work with the autotools. The original, non-GNU make is vastly simpler. (Same with gawk vs. regular awk.)