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

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ê


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λ


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.