I'm pretty comfortable with functional programming, but have never touched Scala, and after a quick skim through I can get a pretty good sense of what's going on in most of the problems. The beauty of functional programming is that there is so much richness in the abstractions. If you see a 'for' or 'while' loop there's no way to tell what it's doing, but just seeing map, reduce (foldl, foldr), filter etc I know a lot more about what's going on.