Certainly no language is perfect. This is true for professional development and teaching. The question you finish with, whether I’m teaching the solution to a problem in general or in Scala is an interesting one. As you say, we are always restricted by the languages we use. Some languages are more opinionated than others. I actually like the fact that Scala is remarkably unopinionated for the purposes of teaching. I can ask students to solve the same problem in multiple ways. That is something I commonly do in CS1 as I think that it not only helps them to understand the various ways to approach the problem, it also makes sure that they understand the nature of the problem itself and how the approaches relate to one another.
In more opinionated languages, there would be one clearly “right” way to solve a problem, and you could only present that solution to your students. There is one big advantage to that because it can reduce confusion. When students are struggling to figure out how to do things even one way, showing them how to do it multiple ways is problematic. However, when students are quick to understand one way, showing them multiple alternatives really helps open their minds and deepen their understanding. This is part of why everyone should learn multiple programming paradigms. In that regard, I like Scala because while I urge them to favor functional approaches, they also learn imperative and see OO both in mutable and immutable forms. None of those approaches are wrong. Each has its own place for its own type of problem. I’m a strong believer that there is no silver bullet. Everything has tradeoffs.
Note that I never even try to show them logic programming. That’s not really a normal approach in Scala. Every language has its limitations. However, given the limited use of logic programming these days, I’m fine if they aren’t exposed to that early. Indeed, I’m not certain that they need to really see it much at all at the undergraduate level.