C'è una differenza tra


11

Attualmente sto imparando il calcolo lambda e mi chiedevo i seguenti due diversi tipi di scrittura di un termine lambda.

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

C'è qualche differenza nel significato o nel modo in cui applichi la riduzione beta, o sono solo due modi per esprimere la stessa cosa?

Soprattutto questa definizione di creazione di una coppia mi ha fatto meravigliare:

coppia = λxy.λp.pxy

Risposte:


15

Queste sono solo differenze di notazioni. è l'abbreviazione di . Nessuna magia qui.λxyz.tλx.λy.λz.t

In effetti, ma tendi a sottolineare che è una funzione cambiando il modo in cui scrivi la definizione. Ma è davvero lo stesso.pair=λxyp.pxypairtuλp.ptu


17

Il primo è un'abbreviazione per il secondo. È una convenzione sintattica comune accorciare le espressioni.

D'altra parte, se hai tuple nella lingua, allora c'è una differenza tra

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

Nel primo caso posso fornire un singolo argomento alla funzione e passare la funzione risultante ad altre funzioni. In quest'ultimo caso, entrambi gli argomenti devono essere forniti contemporaneamente. Esiste ovviamente una funzione che può essere applicata per convertire 1 in 2 e viceversa. Questo processo è noto come (un) curry .

La definizione di che menzioni è una codifica della nozione di coppie nel -calculus, piuttosto che coppie come tipo di dati primitivo (come ho accennato sopra).pairλ


2

La trasformazione di una funzione che accetta più argomenti in una catena di funzioni con singoli argomenti si chiama curry . Le due funzioni sono essenzialmente le stesse.

Articolo di Wikipedia sul curry


8
Non esiste una funzione che accetta più argomenti nel calcolo lambda. è esattamente lo stesso di , non sostanzialmente lo stesso. λxy.xyλx.λy.xy
sepp2k,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.