Exciting paper!
Even more striking is what scripting languages say about the organization of languages. Most books rigorously adhere to the sacred division of languages into “functional”, “imperative”, “object-oriented”, and “logic” camps. I conjecture that this desire for taxonomy is an artifact of our science-envy from the early days of our discipline: a misguided attempt to follow the practice of science rather than its spirit.
We are, however, a science of the artificial. What else to make of a language like Python, Ruby, or Perl? Their designers have no patience for the niceties of these Linnaean hierarchies; they borrow features as they wish, creating melanges that utterly defy characterization. How do we teach PL in this post-Linnaean era?
I think this is the right approach.
When I found FP, something felt “more right” for me than I’d felt with prior PL experience. Yet, now it feels more like a tool. Often useful, not always. Clojure helps emphasize this point - problems can be solved with functions and data, but other tools are available when needed.