Здесь скорее вопрос, нужно ли разделять функторы с единым интефейсом на те, которые с сайд-ефектами(создание данных в базе или во внешнем мире), и тех, которые работают как чистая функция для генерации разнородных in-memory обьектов — списков, хешей, структур, value objects, стринги простой etc
А если оба типа еще и работают в пределах бизнес логики?
Так как на практике очень много людей смешивают бизнес-логику с абсолютно сторонними вещами