Будучи давним программистом на Java, а в последние годы пристрастившимся к Haskell, я сейчас изучаю Scala. Мой вопрос:
Как программировать на Java без побочных эффектов?
т.е. Как я могу вручную сделать то, что Scala делает для меня?
Книга Scala от Одерски часто объясняет функциональные концепции в терминах объектно-ориентированной терминологии (например, val = final, if = ternary op.).
Есть ли доступное руководство по программированию без побочных эффектов на Java (как можно меньше)? Я думаю, можно было бы получить многие из известных преимуществ с помощью простой старой Java и немного дисциплины (например, неизменяемые коллекции, конечные значения, жесткие методы, которые не изменяют состояние объекта / приложения).