Functional Programming

Functional programming encompasses a wide array of techniques revolving around higher order functions, closures, recursion, declarative programming, immutability, and type systems that can help writing more correct, more easily understandable code.

My first introduction to functional programming was Higher Order Perl by Mark Jason Dominus (mjd), though SICP was also extremely valuable.