De acuerdo con el principio de Separación de consulta de comando , así como las presentaciones de Pensamiento en datos y DDD con Clojure , uno debe separar los efectos secundarios (modificar el mundo) de los cálculos y las decisiones, para que sea más fácil de entender y probar ambas partes.
Esto deja una pregunta sin respuesta: ¿en qué parte del límite deberíamos poner "preguntar al mundo"? Por un lado, solicitar datos de sistemas externos (como bases de datos, API de servicios externos, etc.) no es referencialmente transparente y, por lo tanto, no debe unirse a un código computacional y de toma de decisiones puro. Por otro lado, es problemático, o tal vez imposible, separarlos de la parte computacional y pasarlo como argumento porque puede que no sepamos de antemano qué datos podemos necesitar solicitar.