2011-12-07 14 views
7

non riesco a capire il motivo per cui la seguente riduzione beta è consentito in senza tipo lambda calcolo:lambda calcolo: passando due valori per un singolo parametro senza currying

(λx.x y) (u v) -> ((u v) y) 

In particolare non riesco a capire come si possa passare due parametri u e v a un singolo parametro x nella parte λx.x. Per consentire quanto sopra non dovrei usare il curry e avere due parametri? Ti piace questa —

(λx.(λy.(x y))) (u v) 

risposta

11

in particolare non riesco a capire come si possa passare due parametri uev

Lei non è passando due parametri u e v. Stai passando (u v), che è un valore singolo o termine: il valore di u applicato a v.

confronta questo con l'aritmetica ordinaria: è possibile applicare una funzione come sin ad un termine composto come sin(x + 1) perché x+1 indica un singolo valore, anche se è l'applicazione della funzione + a due argomenti x e 1.

Problemi correlati