Of course, this begs the question: why care? I think my answer would be: because interfacing with the outside world is the part that’s easiest to screw up with the data typically being semistructured, so I want types as close to those boundaries as possible. Same story with injection attacks. Finally, with external systems as dependencies, your success can be made or broken by how successfully your end deals with their failures, whether literal errors or “just” issues that are indistinguishable from a DDOS attack. So I’d integrate with the outside world with Scala, too.
Anyway, this is just my own $0.02. Thanks for the great write-up!