ho scoperto che il programma per controllare se lo scoping è lessicale o dinamico è quello indicato di seguito (fonte: http://inst.eecs.berkeley.edu/~cs61a/su10/resources/sp11-Jordy/scope/)programma per controllare se lo scoping è lessicale o dinamico
(define test
(let ((scope 'lexical))
(lambda() scope)))
(let ((scope 'dynamic))
(test))
Ma come è possibile questo lavoro? Questo dovrebbe sempre essere "lessicale" (indipendentemente dal fatto che l'ambito sia lessicale o dinamico) giusto? poiché nello scope locale del corpo del primo 'let', lo scope viene sempre definito come 'lessicale'. Correggetemi se ho torto
Ho compreso i programmi nel collegamento e il concetto di stack spiegato qui. Grazie per le informazioni. Ma quando la funzione di test viene chiamata dal secondo "let", il codice all'interno del blocco di definizione viene eseguito e il blocco di let all'interno della funzione di test deve nuovamente inviare il valore "lessicale allo stack prima dell'esecuzione del blocco lambda, giusto?". .. o qual è il problema nella mia comprensione dell'esecuzione? –
@SubinP Il 'define' non viene eseguito quando si chiama la funzione, la funzione è già definita come' (lambda() scope) '. – molbdnilo
Grazie, è chiaro ora –