De acordo com o princípio de Separação de Consulta por Comando , assim como as apresentações Thinking in Data e DDD with Clojure, é necessário separar os efeitos colaterais (modificando o mundo) dos cálculos e decisões, para que seja mais fácil entender e testar as duas partes.
Isso deixa uma pergunta sem resposta: onde relativamente à fronteira devemos colocar "perguntar ao mundo"? Por um lado, a solicitação de dados de sistemas externos (como banco de dados, APIs de serviços extental etc.) não é referencialmente transparente e, portanto, não deve se encaixar no código computacional e de tomada de decisão. Por outro lado, é problemático ou talvez impossível separá-los da parte computacional e transmiti-los como argumento, porque talvez não saibamos antecipadamente quais dados podemos precisar solicitar.