Dường như hầu hết (nếu không phải tất cả) toàn cầu declarations không thể được hoàn nguyên theo cách ANSI CL tiêu chuẩn.Làm cách nào để hoàn tác tuyên bố `declaration`?
Ví dụ: khi bạn đánh giá (trực tiếp hoặc bằng cách tải một tập tin) là một hình thức như (proclaim '(declaration my-decl))
hoặc (declaim (special *my-var*))
không có di cách để làm cho (declare (my-decl ...))
bất hợp pháp hoặc *my-var*
từ vựng.
Cung cấp triển khai khác nhau cách không di động để hoàn nguyên việc khai báo special
, thường qua (proclaim '(notspecial *my-var*))
hoặc một số thủ thuật khác.
Làm thế nào về declaration
proclamation?
Cách triển khai khác nhau hoàn tác? Bạn sẽ triển khai nó như thế nào? Bạn có nghĩ rằng (proclaim '(notdeclaration my-decl))
là một ý tưởng hay không?
Động lực: trong bộ thử nghiệm, sẽ tốt hơn nếu là mô-đun - để có thể hoàn nguyên tất cả các hiệu ứng của báo cáo thử để tránh bất kỳ sự can thiệp nào có thể xảy ra với bộ phần mềm thử nghiệm. Tôi biết đó là động lực một tuần vì The Right Way là sử dụng packages.
Hmm. Điều gì xảy ra nếu bạn unintern biểu tượng cho biến? Điều này có lẽ sẽ là một ý tưởng tồi vì nó sẽ mess up bất kỳ ranh giới giữa cũ/mới tài liệu tham khảo để biểu tượng –
Tôi không thấy bất kỳ cách thích hợp để làm điều đó trong SBCL, nhưng nó có vẻ như '(setf (sb-int: info : khai báo: được công nhận tên-of-the-declaration) nil) 'sẽ làm điều đó. – jkiiski