TC-6 Goals
Things to learn during this stage that you should remember:
- Term Rewriting System
Term rewriting system is a whole topic of research in itself. If you need to be convinced, just look up 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 onstd::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.