Tôi biết rằng khi bạn muốn tạo một liên kết động/toàn cục trong Lisp, bạn sử dụng hoặc là defparameter hoặc defvar. Tôi cũng biết rằng bạn có thể thực hiện các ràng buộc từ vựng, tốt, hầu như ở khắp mọi nơi, bằng cách sử dụng danh sách đối số defun hoặc báo cáo.Điều gì xảy ra khi tôi sử dụng câu lệnh setf đơn giản trong LISP?
Những gì tôi đang tự hỏi là chính xác những gì nó tôi được thực hiện khi tôi thực hiện một tuyên bố như thế này trong đó x đã không tuyên bố hoặc sử dụng bất cứ nơi nào khác trong các mã:
(setf x 10)
Điều này dường như làm việc tốt, và x dường như không hoạt động như một biến từ vựng. Nó thực sự là một toàn cầu năng động, giống như tôi đã sử dụng defparameter hoặc defvar, hoặc là nó cái gì khác hoàn toàn?
Cảm ơn! Câu trả lời của bạn thực sự hữu ích. Sử dụng câu trả lời của bạn cùng với một số thử nghiệm trong REPL cuối cùng đã giúp tôi hiểu đầy đủ về hành vi sẽ xảy ra với tuyên bố ban đầu của tôi. Và bây giờ tôi cũng biết sự khác biệt giữa một biến đặc biệt và không đặc biệt. – Gearov