The basic concept of lazy evaluation
Before we create a lazy code, let's discuss the basic concepts of lazy evaluation. We will use the delaying process to make our code lazy, the caching technique to increase the performance of the code by avoiding needless calculations, and the optimizing technique to speed up the code by storing the results of expensive function calls and returning the cached result when the same inputs occur again. After we have looked at these techniques, we will try to develop the real lazy code.
Delaying the process
The basic concept of laziness is delaying a process. In this section, we will discuss how to delay the execution of a particular process. We will create a new class named Delay
. We will pass a function into it when we construct the class. The function won't be run unless we invoke the Fetch()
method. The implementation of the function is as follows:
template<class T> class Delay { private: function<T()> m_func; public...