This content originally appeared on DEV Community 👩💻👨💻 and was authored by Francisco Zanfranceschi
Conteúdo original em https://twitter.com/zanfranceschi/status/1587928641291227136
Ei dev,
Uns dias atrás, vi alguns comentários por aqui sobre a diferença de FUNÇÃO PURA e FUNÇÃO DETERMINÍSTICA.
São a mesma coisa? Você sabe definir esses dois conceitos?
cc @sseraphini
bcc @otaviolemos @coproduto
↓
FUNÇÃO DETERMINÍSTICA:
É uma função que, dada certa entrada, SEMPRE vai produzir o mesmo resultado. Simples assim.
Antes de definir função pura, é necessário entender o que é EFEITO COLATERAL ("side effect" in english).
EFEITO COLATERAL, em ciências da computação, é alguma mudança (efeito) observável fora (colateral) do escopo ou ambiente da execução de um programa.
Ou seja, por exemplo, qualquer operação de I/O (rede, arquivo, stdin, stdout, etc.) causa um efeito colateral em um programa. Ler a data/hora do sistema, um número aleatório, modificar ou ler uma variável global também são considerados efeitos colaterais, blz?
É muito comum a gente ver a definição de efeito colateral como algo que CAUSA uma mudança externa da perspectiva de quem executa. Mas é válido a gente pensar também da perspectiva de quem SOFRE com a mudança (leitura dum valor aleatório, p.ex.). Suave?
Então vamos lá...
FUNÇÃO PURA:
É uma função DETERMINÍSTICA que NÃO CAUSA (OU SOFRE COM) EFEITOS COLATERAIS.
"Pô, mas vc colocou o mesmo exemplo da função determinística, seu baiter safado?!?!" 🤭
Sim! Uma função pura é determinística e sem efeitos colaterais, mas uma função determinística PODE não ser pura. Ou seja, ela PODE causar ou sofrer com efeitos colaterais.
Olha esse outro exemplo de uma função determinística. Ela sempre vai retornar o mesmo resultado dadas as mesmas entradas, mas escrever no stdout é considerado um efeito colateral, pois altera um estado externo.
Uma informação legal:
Uma forma de validar a pureza duma função é verificando se ela é transparente referencialmente. Se for, é pura.
Dá uma olhada nessa thread se tiver dúvida sobre o que é transparência referencial.
https://twitter.com/zanfranceschi/status/1586379168719073281
Resumindo todo esse rolê:
Função determinística sempre retorna o mesmo resultado dadas as mesmas entradas, mas ela PODE causar ou sofrer com efeitos colaterais.
Função pura é uma função determinística SEM efeitos colaterais ─ é uma função referencialmente transparente.
É isso!
Queria mandar um abraço especial ao @otaviolemos e ao @coproduto pela discussão inicial sobre o assunto! 💕
E obrigado a você também que leu até aqui!
Bjs e abraços. 😗 🤗
This content originally appeared on DEV Community 👩💻👨💻 and was authored by Francisco Zanfranceschi
Francisco Zanfranceschi | Sciencx (2022-11-02T22:08:57+00:00) [Conceito] – Funções Puras vs Determinísticas. Retrieved from https://www.scien.cx/2022/11/02/conceito-funcoes-puras-vs-deterministicas/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.