MCIPFE — Cálculo Lambda

Nathan Caracho
Voltz Motors
Published in
2 min readJun 24, 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:

λ x. x + 1
(λ x. x + 1)2
2+1 =3

λ x. x + 1
(λ x. x + 1)2
2+1 =3add_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.

true = λ x.λ y. x
false = λ x.λ y. y
(λ b. b false true) true
(true false true) = false
(λ b. b false true) false
(false false true) = true

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.

Bibliografia

--

--