Why is everyone so focused on the capabilities of their tools
Techniques depend on implementation, which defines the capabilities of tools.
For example most of fancy C macro stuff relies on three GCC extensions:
comma swallowing #VA_ARGS (used for argument counting)
({statement expressions}) (required for lambdas and local functions(compose,partial))
and 'typeof'(to get type info from constants)
Without these C preprocessor is far less capable of functional programming techniques.