Zgodnie z zasadą rozdzielania zapytań , a także Myślenia w danych i DDD z prezentacjami Clojure, należy oddzielić skutki uboczne (modyfikujące świat) od obliczeń i decyzji, aby łatwiej było zrozumieć i przetestować obie części.
Pozostawia to pytanie bez odpowiedzi: gdzie w stosunku do granicy powinniśmy postawić „zadawanie światu”? Z jednej strony żądanie danych z systemów zewnętrznych (takich jak baza danych, interfejsy API usług zewnętrznych itp.) Nie jest względnie przejrzyste, a zatem nie powinno współdziałać z czystym kodem obliczeniowym i decyzyjnym. Z drugiej strony problematyczne, a może niemożliwe, jest dokuczanie im poza częścią obliczeniową i przekazywanie go jako argumentu, ponieważ możemy nie wiedzieć z góry, o które dane możemy poprosić.