В соответствии с принципом разделения команд и запросов , а также мышлением в данных и DDD с презентациями Clojure следует отделять побочные эффекты (изменяющие мир) от вычислений и решений, чтобы было легче понять и протестировать обе части.
Это оставляет без ответа вопрос: где относительно границы мы должны поставить «спрашивать мир»? С одной стороны, запрос данных из внешних систем (таких как база данных, API экстентальных сервисов и т. Д.) Не является прозрачным по ссылкам и, следовательно, не должен сочетаться с чисто вычислительным кодом и кодом для принятия решений. С другой стороны, проблематично или, возможно, невозможно отделить их от вычислительной части и передать в качестве аргумента, потому что мы можем заранее не знать, какие данные нам могут потребоваться.