Secondo il principio di Separazione comando-query , oltre a Pensare nei dati e DDD con presentazioni Clojure, si dovrebbero separare gli effetti collaterali (modificando il mondo) da calcoli e decisioni, in modo che sia più facile capire e testare entrambe le parti.
Questo lascia una domanda senza risposta: dove relativamente al limite dovremmo porre "chiedere al mondo"? Da un lato, la richiesta di dati da sistemi esterni (come database, API dei servizi estetici, ecc.) Non è referenzialmente trasparente e quindi non dovrebbe stare insieme con puro codice computazionale e decisionale. D'altra parte, è problematico, o forse impossibile, stuzzicarli a parte la parte computazionale e passarli come argomento come perché potremmo non sapere in anticipo quali dati potremmo aver bisogno di richiedere.