Functional Programming: A Pragmatic Introduction
infoq.com