Selon le principe de séparation Command-Query , ainsi que les présentations Thinking in Data et DDD with Clojure , il convient de séparer les effets secondaires (modifiant le monde) des calculs et des décisions, afin qu'il soit plus facile de comprendre et de tester les deux parties.
Cela laisse une question sans réponse: où par rapport à la frontière devrions-nous mettre "demander au monde"? D'une part, la demande de données à des systèmes externes (comme la base de données, les API des services externes, etc.) n'est pas référentiellement transparente et ne doit donc pas être assortie d'un code informatique et décisionnel pur. D'un autre côté, il est problématique, ou peut-être impossible de les taquiner en dehors de la partie informatique et de les passer comme argument car nous ne savons peut-être pas à l'avance quelles données nous pouvons avoir besoin de demander.