Existe uma diferença entre

11

Atualmente, estou aprendendo o cálculo lambda e estava pensando nos dois tipos diferentes de escrita de um termo lambda.

  1. λxy.xy
  2. λx.λy.xy

Existe alguma diferença no significado ou na maneira como você aplica a redução beta, ou essas são apenas duas maneiras de expressar a mesma coisa?

Especialmente essa definição de criação de pares me fez pensar:

par = λxy.λp.pxy

magnattic
fonte

Respostas:

15

Essas são apenas diferenças de notações. é curto para . Não há mágica aqui.λxyz.tλx.λy.λz.t

De fato, mas você tende a enfatizar que é uma função alterando a maneira como você escreve a definição. Mas é realmente o mesmo.par=λxyp.pxypartvocêλp.ptvocê

jmad
fonte
17

O primeiro é uma abreviação para o segundo. É uma convenção sintática comum para encurtar expressões.

Por outro lado, se você possui tuplas no idioma, existe uma diferença entre

  1. λx.λy.xy e
  2. λ(x,y).xy .

No primeiro caso, posso fornecer um único argumento para a função e passar a função resultante para outras funções. Neste último caso, ambos os argumentos devem ser fornecidos de uma só vez. Obviamente, existe uma função que pode ser aplicada para converter 1 em 2 e vice-versa. Esse processo é conhecido como (des) currying .

A definição de mencionada é uma codificação da noção de pares no -calculus, em vez de pares como um tipo de dados primitivo (como sugeri acima).parλ

Dave Clarke
fonte
2

Transformar uma função que leva vários argumentos para uma cadeia de funções com argumentos únicos é chamada currying . As duas funções são essencialmente as mesmas.

Artigo da Wikipedia sobre curry

Ghassen Hamrouni
fonte
8
Não existe uma função que aceite vários argumentos no cálculo lambda. é exatamente o mesmo que , não apenas basicamente o mesmo. λxy.xyλx.λy.xy
sepp2k