5.3 Funções Puras
Uma função é considerada pura se possui transparência referencial e é livre de efeitos colaterais . Em linguagens puramente funcionais, é permitido apenas a definição de funções puras, uma vez que na matemática todas funções são naturalmente puras.
Funções puras possuem algumas propriedades úteis durante a programação:
- se o resultado de uma função não é usado, a chamada da função pode ser removida sem afetar outras expressões;
- uma vez que possui transparência referencial, o compilador pode utilizar técnicas de otimização;
- se não há dependência de dados entre duas ou mais funções puras, a ordem de execução entre elas é irrelevante. O que permite naturalmente um processamento paralelo, uma vez que uma não interfere na outra;
- Se uma linguagem de programação não permite efeitos colaterais, qualquer estratégia de avaliação de expressão pode ser usada, o que dá ao compilador maior liberdade para reordenar a avaliação das expressões no programa.