lambda calcolo per la programmazione funzionale
-
12-09-2019 - |
Domanda
in lambda calcolo (λ x. Λ λ s y.. Λ z. X s (y s z)) viene utilizzato per l'aggiunta di due numeri della Chiesa come possiamo spiegare questo, c'è qualche buona risorsa lambda calcolo per la programmazione funzionale? il vostro aiuto è molto apprezzato
Soluzione
In realtà f1 λ. λ f2. λ s. λ z. (F1 s (f2 s z)) calcola inoltre perché è in effetti sostituendo (f2 s z), il numero rappresentato da f2, verso l'interno (f1 s z) "zero".
Esempio: Prendiamo due per f2, s s z
in forma estesa. f1 è uno: s z
. Sostituire che lo scorso z
da f2 e si ottiene s s s z
, la forma estesa per tre.
Questo sarebbe più facile con una lavagna e-agitando la mano, mi spiace.
Altri suggerimenti
In lambda calcolo, è il codice un tipo di dati in termini di operazioni da esso induce. Ad esempio, un valore booleano è solo una funzione scelta che prende in ingresso due valori ae b eo restituisce una o b:
true = \a,b.a false = \a,b.b
Qual è l'uso di un numero naturale? Il suo scopo principale è quello di computazionale fornire un limite di iterazione. Così, abbiamo il codice di un numero naturale come operatore che prende in ingresso una funzione f, un valore x, e l'applicazione iterare di f sopra x per n volte:
n = \f,x.f(f(....(f x)...))
con n occorrenze di f.
Ora, se si vuole iterare n + m volte la funzione f partendo da x è necessario avviare l'iterazione n volte, vale a dire (n f x), e poi iterare per m i tempi supplementari, a partire dal risultato precedente, vale a dire
m f (n f x)
Allo stesso modo, se si vuole iterare n * m volte è necessario iterare m volte l'operazione di iterazione n volte f (come in due cicli annidati), che è
m (n f) x
La codifica precedente di tipi di dati è più formalmente spiegato in termini dei costruttori e separatori corrispondenti (il cosiddetto Bòhm-Berarducci encoding).