TC-6 Goals

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::splice, 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::visit which allows for dispatching on std::variant similar to other languages’ pattern-matching.

Concepts

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.