Programowanie funkcyjne jest jednym z najstarszych paradygmatów programowania. Wydawałoby się, iż wszystko na ten temat zostało już powiedziane. W ostatnich latach techniki FP coraz częściej pojawiają się w językach głównego nurtu. Jak nie pogubić się w gąszczu takich pojęć jak "rekursja ogonowa", "przezroczystość referencyjna", "funkcje wyższego rzędu", "niemutowalność", "klasy typów"? Jak nie bać się monad i innych abstrakcji z teorii kategorii? Jak sprawić, aby to kompilator pracował dla nas, a nie na odwrót?
Postaram się pokazać na prostych przykładach w języku Scala najbardziej użyteczne techniki programowania funkcyjnego z punktu widzenia dewelopera aplikacji, ale też z perspektywy twórcy bibliotek - które abstrakcje i kiedy mają sens. Będzie to prezentacja dla tych, którzy są na początku swojej przygody lub chcieliby usystematyzować swoją wiedzę z zakresu z FP.