[Conceito] – Funções Puras vs Determinísticas

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 c…


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

Image

FUNÇÃO DETERMINÍSTICA:

É uma função que, dada certa entrada, SEMPRE vai produzir o mesmo resultado. Simples assim.

Image

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.

Image

"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.

Image

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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » [Conceito] – Funções Puras vs Determinísticas." Francisco Zanfranceschi | Sciencx - Wednesday November 2, 2022, https://www.scien.cx/2022/11/02/conceito-funcoes-puras-vs-deterministicas/
HARVARD
Francisco Zanfranceschi | Sciencx Wednesday November 2, 2022 » [Conceito] – Funções Puras vs Determinísticas., viewed ,<https://www.scien.cx/2022/11/02/conceito-funcoes-puras-vs-deterministicas/>
VANCOUVER
Francisco Zanfranceschi | Sciencx - » [Conceito] – Funções Puras vs Determinísticas. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/11/02/conceito-funcoes-puras-vs-deterministicas/
CHICAGO
" » [Conceito] – Funções Puras vs Determinísticas." Francisco Zanfranceschi | Sciencx - Accessed . https://www.scien.cx/2022/11/02/conceito-funcoes-puras-vs-deterministicas/
IEEE
" » [Conceito] – Funções Puras vs Determinísticas." Francisco Zanfranceschi | Sciencx [Online]. Available: https://www.scien.cx/2022/11/02/conceito-funcoes-puras-vs-deterministicas/. [Accessed: ]
rf:citation
» [Conceito] – Funções Puras vs Determinísticas | Francisco Zanfranceschi | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.