A lot of those concepts were already in Smalltalk.
a do: [:x| Transcript print: x ]
[] = closure
That is, because Smaltalk was based on Lisp. But the other OO languages removed this concept, but it came back in Scala.