Iep, tenho andado a bater nisto desde que vi esse conceito em scala. E ontem acho que cheguei lá. Nota que a função que finaliza pode n ser a fianlizadora final, pode ser usada por outras coisas que essas sim são impuras. Tu estás aí com o raciocinio dependente da BD (tal como eu).

Por isso é que functional programming é outra forma de pensar as coisas :)