Perché Lambda-Abstractions sono gli unici termini che sono valori nel calcolo Lambda non titole?

cs.stackexchange https://cs.stackexchange.com/questions/1662

  •  16-10-2019
  •  | 
  •  

Domanda

Sono confuso sulla seguente affermazione: "Gli unici valori nel calcolo di lambda non tipici sono l'abbandono di lambda".

Perché gli altri termini non sono valori? Cosa significa per un valore di lambda essere un valore? La prima cosa che mi è venuta in mente è stata che forse lambda-abstrazioni sono le uniche forme normali possibili, ma questo non è vero ovviamente, ad esempio $ ( lambda x. ; X) ; y a y $.

Qualcuno può illuminarmi?

È stato utile?

Soluzione

Ci sono diverse cose che stanno succedendo qui:

  • La lingua di cui stai parlando non ha ulteriori tipi di dati, altrimenti ci sarebbero altri tipi di valori.
  • La strategia di riduzione della lingua non si riduce all'interno delle astrazioni Lambda. Sia call-by-valore che call-by-name sono conformi a questo. Altrimenti, non tutte le astrazione di Lambda sarebbero normali.
  • Si considera generalmente le espressioni chiuse come programmi, quindi non esistono variabili gratuite, quindi l'esempio presente non è considerato.

Altri termini non sono valori perché possono essere ridotti o non compaiono in programmi chiusi.

Che un'astrazione di lambda sia un valore significa che non può essere ridotto ulteriormente (a seconda della strategia di riduzione).

Per termini aperti, anche le variabili sono valori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top