Этот один вкладыш...
Console.println(io.Source.fromFile("names.txt").getLines.mkString.split(",").map{x:String => x.slice(1, x.length -1)}.sortBy { x => x}.zipWithIndex.map{t =>{ (t._2 +1)*(t._1.map{_.toChar - "A"(0).toChar + 1}.sum)}}.sum);
... это мое решение Project Euler problem 22. Кажется, он работает, и он написан в (моей попытке) функциональном стиле.
Этот пример немного экстремален, но мой вопрос немного более общий - как вы предпочитаете писать/форматировать/комментировать код функционального стиля? Функциональный подход, по-видимому, стимулирует последовательность вызовов методов, которые, как я считаю, могут быть нечитабельными, а также оставлять нигде не очевидным, чтобы комментировать.
Кроме того, когда я пишу процедурный код, я нахожу, что я пишу мелкие методы с одной целью и с содержательными именами. Когда я пишу функциональный код, я, кажется, разрабатываю привычку, которая создает строки, похожие на приведенные выше, где (для меня) значение трудно расшифровать, а также отдельные вычисления трудно повторно использовать в другом месте. Довольно много примеров функционального кода, которые я вижу в Интернете, так же кратки (для меня) неясны.
Что мне делать? Написание небольших функций для каждой части вычисления с именами, значимыми в текущем контексте? (даже если они немного больше, чем обертка для карты, скажем?)
В качестве примера, который я привел, какие способы его написания лучше всего представить и представить?
(Как и все вопросы стиля, этот субъективен. Нет причин, чтобы он был споречным, хотя!)