Gramática do Cálculo Lambda
A gramática do cálculo lambda é um conjunto de regras sintáticas que especifica como as expressões são formadas.
Uma expressão pode ser:
- Um nome (uma variável, como
ou ), - Uma função (uma abstração usando o símbolo
), - Ou uma aplicação (a combinação de duas expressões).
Em notação formal, temos
Essas regras são o esqueleto do cálculo lambda e definem sua estrutura recursiva.
Nomes
Um nome é simplesmente uma variável, como
Pense nisso como as variáveis que você usa em álgebra ou programação, mas aqui, elas são puramente simbólicas, sem valores fixos até que sejam usadas em uma função ou aplicação.
Funções
Uma função é definida como
- O símbolo
indica que estamos criando uma função anônima. - O
após o é o parâmetro da função (a variável que será “ligada”). - O ponto (.) separa o parâmetro do corpo da função, que é qualquer
.
Por exemplo,
Aplicações
Uma aplicação é escrita como
Na prática, usamos parênteses para uma maior clareza, mas na gramática pura eles são implícitos.
Por exemplo,
Note
Esse processo de substituição é chamado de β-redução.
Exemplo
Exemplo 1: Função identidade
Considere a expressão:
Aqui,
Warning
Os nomes dos argumentos nas definições de função não possuem nenhum significado.
Ou seja:
Para resolver, substituímos
Note
Todas as ocorrências do identificador
no corpo da definição são substituídos por .
Exemplo 2: Aplicação com duas variáveis
A função é
Em outras palavras, substituímos
O resultado é uma nova aplicação,