tôi thấy rằng chương trình để kiểm tra xem Phạm vi là từ vựng hoặc động là người đưa ra dưới đây (nguồn: http://inst.eecs.berkeley.edu/~cs61a/su10/resources/sp11-Jordy/scope/)Chương trình để kiểm tra xem Phạm vi là từ vựng hoặc động
(define test
(let ((scope 'lexical))
(lambda() scope)))
(let ((scope 'dynamic))
(test))
Nhưng làm thế nào có thể làm việc này? Điều này sẽ luôn luôn in 'từ vựng (không phụ thuộc vào phạm vi là từ vựng hay động) phải không? vì trong phạm vi địa phương của nội dung của 'let' đầu tiên, phạm vi luôn được định nghĩa là 'lexical .. Vui lòng sửa tôi nếu i am sai
Tôi hiểu các chương trình trong liên kết và khái niệm ngăn xếp được giải thích ở đây. Cảm ơn bạn đã thông tin. Nhưng khi hàm test được gọi từ lệnh 'let' thứ hai, mã bên trong khối define được thực thi và khối let cho bên trong hàm test sẽ lại đẩy giá trị 'lexical đến stack trước khi khối lambda được thực thi, phải không ?. .. hoặc vấn đề trong sự hiểu biết của tôi về việc thực thi là gì? –
@SubinP 'define' không được thực thi khi bạn gọi hàm, hàm đã được định nghĩa là' (lambda() scope) '. – molbdnilo
Cảm ơn, giờ đã rõ ràng –