De certa forma, creio que consegui entender o conceito dos objetos imutáveis e, consequentemente, funções puras. Veja se meu raciocínio está correto:
Exemplo, se eu tenho uma variável de log, consequentemente, ela é variável. Então, pode assumir qualquer valor e isso pode mudar de acordo com condições ou eventos. Sendo assim, se eu utilizar uma função "não pura", obviamente, estarei com chances do resultado não ser o mesmo. É esse o conceito?
Se sim, qual é a vantagem dele durante a programação e, principalmente, como ele costuma ser aplicado.
Obrigado!