#include "lambda_lib/lambda_lib.hpp" using namespace lambda; int main(void) { std::unique_ptr node = // APPLICATION( // FIRST(), // APPLICATION( // SECOND(), // LIST( // NATURAL_NUMBER(0), // NATURAL_NUMBER(1), // NATURAL_NUMBER(2) // ) // ) // ); // std::cout << "original (" << getSize(node) << " bytes): "; print(node); std::cout << "\n"; rename(node); std::cout << "renamed: "; print(node); std::cout << "\n"; std::size_t maxSize = getSize(node); std::size_t minSize = getSize(node); std::size_t totalSize = getSize(node); std::size_t step = 0; bool isReduced = !reduceOnce(node); while (!isReduced) { std::size_t size = getSize(node); maxSize = std::max(maxSize, size); minSize = std::min(minSize, size); totalSize += size; std::cout << "step " << ++step << " (" << getSize(node) << " bytes): "; print(node); std::cout << "\n"; isReduced = !reduceOnce(node); } std::cout << "result (" << getSize(node) << " bytes): "; print(node); std::cout << "\n"; if (step) std::cout << "info: steps(" << step << ") minSize(" << minSize << ") maxSize(" << maxSize << ") avrgSize(" << (double)totalSize / step << ")\n"; return 0; }