The best answer is really going to depend on what languages you currently know. If you're familiar with the C-family, in particular C#, then learning F# would probably be most practical. You'll pick up all the fundamentals of functional programming, but be able to blend in OOP concepts (like in OCAML). Plus, you can back port most of that knowledge into C# itself to do minor functional programming in an OOP language.
A good book for this method would be Real World Functional Programming by Tomas Petricek with Jon Skeet. EDIT: Its a good book because it goes over the principles of FP, but shows how to use them in both a Functional language (F#) and an OOP language (C#) so you gain an understanding of not just what to do and why, but also how the computer is really interpreting what you're doing. I think that's always valuable in programming.
On the other hand, you may want a pure approach, in which case I recommend Haskell. Its harder to get started with, but will give you the cleanest and most comprehensive approach to learning just FP concepts.