Тааак...
Полугруппы, моноиды, монады, функторы, линзы, катаморфизмы, анаморфизмы, стрелы... Все это хорошо, и после упражнения или двух (или десяти) вы можете понять их сущность. И с Scalaz
вы получаете их бесплатно...
Однако, с точки зрения реального программирования, я изо всех сил пытаюсь найти применение этих понятий. Да, конечно, я всегда нахожу кого-то в сети, используя Monads для IO или Lenses в Scala, но... еще...
То, что я пытаюсь найти, - это что-то вроде "предписывающих" строк шаблона. Что-то вроде: "здесь вы пытаетесь решить эту проблему, и один хороший способ ее решить - использовать линзы таким образом!"
Предложения?
Обновление: что-то в этих строках, с книгой или двумя, было бы замечательно (спасибо Paul): Примеры шаблонов дизайна GoF в основных библиотеках Java