La migliore risposta dipenderà davvero dalle lingue che conosci attualmente. Se hai familiarità con la famiglia C, in particolare C #, allora l'apprendimento di F # sarebbe probabilmente il più pratico. Raccoglierai tutti i fondamenti della programmazione funzionale, ma sarai in grado di fondere i concetti OOP (come in OCAML). Inoltre, è possibile eseguire il porting di gran parte della conoscenza in C # stesso per eseguire una programmazione funzionale minore in un linguaggio OOP.
Un buon libro per questo metodo sarebbe Real World Functional Programming di Tomas Petricek con Jon Skeet. EDIT: è un buon libro perché ripercorre i principi della FP, ma mostra come usarli sia in un linguaggio funzionale (F #) che in un linguaggio OOP (C #) in modo da comprendere non solo cosa fare e perché, ma anche come il computer stia davvero interpretando quello che stai facendo. Penso che sia sempre utile nella programmazione.
D'altra parte, potresti volere un approccio puro, nel qual caso raccomando Haskell. È più difficile iniziare, ma ti darà l'approccio più pulito e completo per l'apprendimento dei soli concetti FP.