I absolutely agree that if you buy into Lazy programming, you have to buy into entirely Pure Functional as well.
However, many languages and frameworks have demonstrated a high degree of success mixing in functional paradigms (mostly centered around collections)
I would like to refer people to the concept of Collection Oriented Programming. In this paradigm, application specify most of there operations as mapping and reducing functions across different collections (trees, vectors, lists, etc). Not only does it promote safety, but it works in such high level constructs, it allows the compiler/interpreter to optimize the operation in many ways, such as optimizing out the lambda calls, and even parallelizing the operations.
To name a few Language+Libraries for which this is hugely successful: Ruby, Clojure, C++11 w/ std::algorithm, Scala, and Haskell, of course.