1
resposta

Imutabilidade e Redefinições no Clojure

O conceito de imutabilidade é apresentado no Clojure, juntamente com a possibilidade de redefinição de uma "variável". Se no meio de uma grande função, eu redefinir uma variável, o que acontecerá com o programa?

Exemplo:

No ponto A: definição de variável

No ponto B: Processamento de uma outra função, esperando a variável do ponto A.

Pela imutabilidade da linguagem, eu teria a garantia que essa variável não ia mudar. Porém, se no meio desses dois pontos de uma função houver uma redefinição dessa mesma variável, ou seja, eu teria o mesmo nome com novos valores. O que vai acontecer com a execução dos script?

1 resposta

Olá João, tudo certo?

Na verdade, isso não deve ocorrer, ao menos no ponto de vista do paradigma funcional. Normalmente, ao definir um símbolo (equivalente ao uso de variáveis em paradigma imperativo), ele deve existir durante a vida inteira dele com apenas um mesmo valor. Uma das grandes vantagens deste paradigma é que sempre que um símbolo for criado e passado como valor de uma função, o retorno será sempre o mesmo, devido à imutabilidade.

Por isso que ao definir um símbolo e passar por uma função, por exemplo map ou reduce, o símbolo continua intacto, mas seu resultado pode ser usado para definir um símbolo novo.

Mas se a imutabilidade não for respeitada, pode haver efeitos colaterais e podem ter retornos inesperados.

Espero ter ajudado!