When we hear about functional programming, we hear about immutability and higher order functions. It turns out, one of the real charms of functional programming is lazy evaluation. Lazy evaluation is all about postponing execution until the last responsible moment. This can lead to quite a bit of efficiency in the execution of code. In this presentation we will learn about what lazy evaluation is, look at example of lazy evaluation, discuss the benefits of laziness, and how it leads to better performance and efficiency of code.