Object-oriented programming with imperative languages like C, C++ and Java has been the norm over the years. But some visionaries argue that other paradigms are more productive. In imperative languages, any method that can possibly return different values, given the same input, has side effects. This article explores the basics of functional programming using Haskell. You to can come to appreciate the raw productivity and power that a functional language can provide and how it eliminates programming side effects.