jem, да просто на собеседованиях бывали люди, которые заявляли о том, что они разбираются в ФП и валятся на самых простых вопросах из теории категорий
Если уж кто-то хочет действительно тру ФП подход поизучать, то я бы порекомендовал немного другую литературу
Пусть хотя бы "изучай Хассель во имя добра", он уже даст понять, что многие вещи решаются сильно проще в ФП, вот к примеру, куда более понятное решение алгоритма быстрой сортировки на haskell, чем тоже самое на java
Исходный код
quicksort1 :: (Ord a) => [a] -> [a]
quicksort1 [] = []
quicksort1 (x:xs) =
let smallerSorted = quicksort1 [a | a <- xs, a <= x]
biggerSorted = quicksort1 [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
Исходный код
public static void quickSort(int[] arr, int start, int end){
int partition = partition(arr, start, end);
if(partition-1>start) {
quickSort(arr, start, partition - 1);
}
if(partition+1<end) {
quickSort(arr, partition + 1, end);
}
}
public static int partition(int[] arr, int start, int end){
int pivot = arr[end];
for(int i=start; i<end; i++){
if(arr[i]<pivot){
int temp= arr[start];
arr[start]=arr[i];
arr[i]=temp;
start++;
}
}
int temp = arr[start];
arr[start] = pivot;
arr[end] = temp;
return start;
}
Как по мне, понять саму суть, а уже потом привязываться к особенностям языка, того же Java, или попробовать Scala + библиотека Cats, ну или Swift + библиотека Bow.
Я рад, когда люди проявляют интерес к ФП, но когда останавливаются даже не начав, считая лямбды и stream из java 8 достаточным, это немного печалит. Нужно больше ФПшников, господин :-)