Learning ATS can help a programmer greatly enhance his or her programming productivity.
For most people, learning basic programming is easy and fun but there seems to be no clear path for one to ever reach the level of a programming expert who can confidently design and implement large and complex software systems. It is very common to see that the initial excitement one receives from some sort of exposure to programming is quickly replaced with the endless need for debugging. And one may even draw the conclusion that the only way to obtain functioning code of quality is by going through a lengthy debugging process, which of course is far from the truth.
In this book, I will be primarily using ATS as a vehicle to teach a style of programing that is often referred to as functional programming (FP). In particular, I will be advocating the use of recursion in problem-solving as well as the need to prevent potential stack overflow caused by deeply nested recursive function calls. I will also be demonstrating concretely and repeatedly that one can drastically reduce the need for debugging by making extensive use of types in programming.