Trong Lisp thông thường, các đối tượng được trích dẫn là dữ liệu theo nghĩa đen. Bạn không nên sửa đổi dữ liệu này, vì hậu quả là không xác định. hậu quả có thể là: sửa đổi các dữ liệu chia sẻ, cố gắng sửa đổi dữ liệu chỉ đọc, một lỗi có thể được báo hiệu, nó chỉ có thể làm việc, ...
Đối với danh sách:
'(1 2 3)
Trên đây là một danh sách liên tục , sẽ được người đọc xây dựng và tự đánh giá, bởi vì nó được trích dẫn. Nếu nó xuất hiện trong mã Lisp, trình biên dịch sẽ nhúng dữ liệu này bằng cách nào đó trong mã FASL.
(quote (1 2 3))
là một cách khác để viết.
(list 1 2 3)
này là lời kêu gọi của hàm Common Lisp LIST
với ba đối số 1
, 2
và 3
. Khi đánh giá kết quả là một danh sách mới tươi (1 2 3)
.
tương tự:
'(1 . 2) and (cons 1 2)
'#(1 2 3) and (vector 1 2 3)
Một là các dữ liệu theo nghĩa đen và người kia là một cuộc gọi chức năng xây dựng một cấu trúc dữ liệu đó.
Nguồn
2010-10-09 17:04:15
Chúng bị bỏ tương tự trên thực tế, hãy xem câu hỏi của tôi [here] (http://stackoverflow.com/questions/32927115/lisp-quote-work-internally?noredirect = 1 # comment53680808_32927115) – William