----- 29/10/17 ----- > Non mi e' chiaro il ruolo del costrutto "lambda": > in un caso ho dichiarato le procedure con > > (define (nome_funz variabile) ... ) > > nell'altro ho utilizzando il "lambda", ma entrambe le soluzioni funzionano senza alcun problema. > Perché usare la seconda modalita' se posso ottenere lo stesso risultato con meno righe di codice? ----- La notazione (define (f x1 x2 ... xk) ... ) e' semplicemente una forma abbreviata di (define f (lambda (x1 x2 ... xk) ... )) che viene trattata esattamente nello stesso modo dal compilatore. Quindi non c'e' alcuna differenza per quanto riguarda la procedura che viene definita (f), e utilizzare la notazione piu' compatta e' una scelta comunque corretta. La seconda forma, tuttavia, mette in evidenza che la definizione della procedura e l'associazione di un nome ad essa sono due cose separate (aspetto che di solito non traspare con la maggior parte dei linguaggi di programmazione, in quanto o non e' possibile o e' complicato e relegato a tecnicismo). Dal punto di vista didattico e' importante abituarsi a distinguere fra queste due cose, e in particolare a concepire espressioni con un valore procedurale, perche' ci sono situazioni in cui questa opportunita' accresce il livello di astrazione che riusciamo ad "esprimere" attraverso un programma. ----- * -----