Thanks for unearthing this post. Definitely shaped my thinking about Ruby/FP/OOP back in the day (two years ago counts as back in the day, right? Geeze)
Thing is, none of these languages can assure immutability or referential transparency. What they offer, to varying degrees, is the ability to use functions as data (i.e. pass functions to functions, and return functions from functions), and for that the term “higher-order programming” makes more sense than “functional programming.”
This is the kind of thing that leads to flame wars over what defines a functional programming language, but data immutability is, for me, an essential aspect of it, and I’m glad this article jumps right in on that.