MCIPFE - Cálculo Lambda
Nathan Branco Caracho
Posted on May 17, 2022
Saga MCIPFE
O Manual Completamente Incompleto de Programação Funcional com Elixir é uma série de postagens bem pequenas para explicar um pouco de programação funcional.
Cálculo lambda
"No início eram apenas funções"
O cálculo lambda é a abstração de um sistema formal da matemática lógica baseado na substituição e mapeamento de valores, sendo a base do conceito de funções puras que temos hoje.
Usando símbolo λ (lambda), seguido do nome do parâmetro e por fim a expressão.
Uma soma:
add_one = fn(x) -> x+1 end
add_one(2)
#3
No caso acima temos uma função simples que recebe um valor como parâmetro (x) e retorna a soma do parâmetro mais (+) 1, ou seja, substitui (x) por um valor e mapeia para expressão de (+1).
O poder de uma função
Com o conceito simples de mapeamento e substituição é possível construir qualquer coisa inclusive a lógica booleana.
Lógica booleana de forma extremamente resumida é ideia que no universo só existem dois estados Verdadeiro ou Falso, contendo operadores como E, OU e NÃO.
Vamos criar a lógica de Verdadeiro , Falso e o operador Negação.
O conceito de Negação é basicamente a inversão do valor booleano, dessa forma NÃO Falso é igual à Verdadeiro.
lambda_true = fn(x, _) -> x end
lambda_false = fn(_, y) -> y end
lambda_not = fn(bool) ->
bool.(lambda_false,lambda_true) end
print = fn(bool) ->
IO.puts(bool.("true","false")) end
print.(lambda_not.(lambda_true)) #false
print.(lambda_not.(lambda_false)) #true
Já no exemplo acima criamos duas funções true
e false
que recebem dois parâmetros x
e y
, a função true
retorna somente o parâmetro x
e a função false
retorna somente o parâmetro y
.
Para a negação
precisamos criar uma outra função que mapeie uma função booleana, true
ou false
, em outra função booleana invertida.
Conclusão
Mas qual a função do cálculo lambda no dia à dia? O cálculo lambda é a base do que conhecemos hoje como uma função, entender esse conceito, mesmo que de forma mais superficial, é a porta de entrada para entender outros conceitos de programação funcional.
Bibliográfia
Posted on May 17, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.