Things to learn during this stage that you should remember:
- Term Rewriting System
Term rewriting system are a whole topic of research in itself. If you need to be convinced, just look for term rewriting system on Google.
- “Functional” Programming in C++
A lot of TC-6 is devoted to looking for specific nodes in lists of nodes, and splitting, and splicing lists at these places. This could be done by hand, with many hand-written iterations, or using functors and STL algorithms. You are expected to do the latter, and to discover things such as
std::find_if, lambda functions, etc.
- C++ pattern-matching
A rather new idiom in the C++ landscape, pattern-matching is possible since C++17 thanks to
std::visitwhich allows for dispatching on
std::variantsimilar to other languages’ pattern-matching.
Another new addition to C++, concepts are part of the standard since C++20 and allow for compile-time checks on template instantiation, which allows for safer generic code, with better error messages.