That's a rather restrictive definition for a functional language (e.g. it would exclude ML) - I'd prefer to call something completely side-effect free a "purely functional language", and reserve the term "functional language" for one that strongly encourages one to program functionally (to be inclusive of the like of ML), and to then say that something like Common Lisp that makes functional programming easy to do but doesn't really favor it over other styles of programming is a language that "supports" functional programming.