Trong một số triển khai của Common LISP chúng ta có thể nói rằng đối với các biểu thức sau đâyTrong clojure, là (= 'a' a) đề cập đến 'cùng một nguyên tử'?
(eq 'a 'a)
là true
vì 'a
và 'a
là "cùng một nguyên tử".
Điều này có thể phụ thuộc vào việc triển khai thực hiện, nhưng dường như cụm từ (được sử dụng trong sách dạy học LISP phổ biến) giả định rằng các nguyên tử có cùng giá trị được lưu trữ trong cùng một vị trí trong bộ nhớ.
Trong Java, hai chuỗi nội bộ có cùng giá trị được lưu trữ trong cùng một vị trí trong bộ nhớ.
Giờ Clojure trên JVM kế thừa di sản của Java, nhưng có đúng là nói rằng hai nguyên tử trong Clojure (trên JVM) có cùng giá trị là cùng một nguyên tử không? (Tức là cách làm việc cơ chế lưu trữ nguyên tử Clojure không?)
Phương ngữ của Lisp thường? Cái gì đây? Phương ngữ nào? Việc triển khai Common Lisp thông thường đều thực hiện ANSI Common Lisp. Có tiếng địa phương của CL, nhưng đó không phải là quan trọng, vì hầu hết mọi người (bao gồm cả người dùng Lisp) có lẽ chưa bao giờ nghe nói về họ. Nhưng có rất nhiều phương ngữ của Lisp. - Bất kỳ Lisp thường sẽ trả về T cho (eq 'a' a). a cũng không phải là một nguyên tử, mà là một biểu tượng. Thuật ngữ 'nguyên tử' cũng không có ý nghĩa trong ngữ cảnh này. Trong lịch sử tất cả mọi thứ mà không phải là một tế bào cons là một nguyên tử. –
"Trong Java, hai chuỗi có cùng giá trị được lưu trữ trong cùng một vị trí trong bộ nhớ." - chỉ khi cả hai thực tập. –