(Almost) Automatic Programming: Recursion is a lot easier than you think
Recursion and recursive programs are often looked at as the ‘unnatural’ way of solving problems, in contrast to iterative programming. But nothing is further from the truth. In fact, it is iterative programs that are the unnatural method of solving problems.
full article
Higher-Order Programming, Programming Idioms and Design Patterns
Almost all large programs are made-up of smaller components that are basic to any problem we are trying to solve. These smaller components are usually little functions to search, sort, find number of occurrence of an object in a sequence, to filter out some objects from a sequence/collection based on some criteria, etc. It is surprising how many of these patterns are common to almost all larger problems we are trying to solve. Here I list and define most of these basic patterns