Em ciência da computação, queremos analisar e entender o código-fonte com rigor matemático. Essa é a única maneira de provar propriedades interessantes (como rescisão) com certeza absoluta. Para isso, precisamos de uma linguagem com um significado muito bem definido para cada construto.
Em teoria, isso poderia ser qualquer linguagem com uma boa semântica formal . Mas, para tornar as coisas menos complicadas e menos propensas a erros, é melhor usar uma linguagem o mais simples possível, mas ainda capaz de expressar qualquer programa (ou seja, Turing está completo ). Para raciocinar sobre códigos imperativos, existem máquinas de Turing . Mas, para raciocinar sobre programação funcional, existe o cálculo.λ
O calcculus básico é como uma linguagem de programação funcional, mas com muita 'bagagem' retirada. Não é importante que seja uma linguagem agradável para escrever programas, nem que seja uma linguagem eficiente. Só que é simples e expressivo. Por exemplo, não precisamos de loops, porque podemos simulá-los com recursão. E não precisamos de funções com vários parâmetros, pois podemos simulá-las com o Currying .λ
Agora, em algum momento, convém provar propriedades sobre construções que não fazem parte do cálculo- básico (sem tipo) . É por isso que os cientistas da computação o estenderam em diferentes direções ao longo dos anos. Por exemplo, para raciocinar sobre sistemas de tipos, existem muitas variações de λ- cálculos digitados .λλ