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:

  1. se o resultado de uma função não é usado, a chamada da função pode ser removida sem afetar outras expressões;
  2. uma vez que possui transparência referencial, o compilador pode utilizar técnicas de otimização;
  3. 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;
  4. 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.