Как Clojure подходит к разделению интересов? Поскольку код - это данные, функции можно передавать в качестве параметров и использовать в качестве возвращаемых...
И, поскольку существует этот принцип "Лучше 1000 функций, которые работают на 1 структуре данных, чем 100 функций на 100 структурах данных" (или что-то в этом роде).
Я имею в виду, упаковать все карту, дать ему ключевое слово в качестве ключа, и что это? функции, скаляры, коллекции, все...
Идея разделения проблем реализована в Java с помощью аспектов (аспектно-ориентированного программирования) и аннотаций. Это мой взгляд на концепцию и может быть несколько ограниченным, так что не принимайте это как должное.
Как правильно (идиоматически) идти в Clojure, чтобы избежать WTF других программистов _