It's Time to Get Good at Functional Programming
ddj.com