Nguyên tử trong Clojure và nguyên tử trong Lisp chung (và hầu hết các Lisps khác) là hai khái niệm hoàn toàn không liên quan. Họ không có gì để làm với nhau, ngoài việc có cùng tên.
Không có 'khác biệt'. Nó sẽ được hỏi sự khác biệt giữa một cửa sổ trong một ngôi nhà và một cửa sổ trên màn hình máy tính của bạn là gì? Nó không có ý nghĩa để xác định sự khác biệt, vì hai khái niệm không liên quan.
'Nguyên tử' trong Clojure quản lý trạng thái.
'Nguyên tử' trong Lisp là một từ cho tất cả các loại dữ liệu không phải là ô khuyết điểm (như số, ký tự, chuỗi, ký hiệu, ...).
Trong Lisp chức năng ATOM
chỉ đơn giản là định nghĩa là:
(defun atom (object)
(not (consp object)))
Kể từ Clojure không có khuyết điểm tế bào và không có chức năng consp
, nó không thể nói (not (consp object))
. Do đó không tồn tại một khái niệm Lisp như 'nguyên tử' trong Clojure. Lưu ý rằng Clojure có hàm cons
, nhưng nó không tạo ra các ô khuyết điểm như trong Lisp.
Nguồn
2010-09-08 06:33:07
Cần lưu ý rằng Clojure vẫn có nguyên tử Lisp trong các ký hiệu, từ khóa, số, chuỗi, v.v., nhưng nó không phải là một phần của từ vựng Clojure. –
@ John Cromartie: điều đó thực sự không thể. Clojure không có tế bào khuyết điểm. Trong nguyên tử Lisp được định nghĩa là 'không khuyết điểm'. Kể từ khi clojure không có tế bào khuyết điểm, khái niệm về một nguyên tử Lisp là không xác định trong Clojure. Lưu ý rằng Clojure có một hoạt động khuyết điểm, nhưng nó không tạo ra các ô khuyết điểm. –