Tôi chưa bao giờ nghĩ về điều này cho đến khi tôi giải thích một số mã clojure cho một đồng nghiệp không quen thuộc với clojure. Tôi đã giải thích let
cho anh ta khi anh ta hỏi tại sao bạn sử dụng một vector để khai báo các ràng buộc chứ không phải là một danh sách. Tôi không thực sự có câu trả lời cho anh ta. Nhưng ngôn ngữ không hạn chế bạn sử dụng danh sách:Tại sao yêu cầu một véc tơ?
=> (let (x 1) x)
java.lang.IllegalArgumentException: let requires a vector for its binding (NO_SOURCE_FILE:0)
Tại sao chính xác là điều này?
Tôi tưởng tượng nó hoàn toàn là dễ đọc, và để cho thi hành một véc tơ chỉ đơn giản là đảm bảo thành ngữ được giữ. – MayDaniel
(Cần có vectơ theo nghĩa đen cho tất cả các macro "let" và "with-".) – MayDaniel
Điều này giống như luật tự nhiên. Bạn có thể lý do * rằng * nó là như thế, nhưng không * tại sao *.Cho dù lý do thực sự cho quyết định này là dễ đọc, một số thực hiện Đề án, một quy ước hoặc loại bữa ăn sáng mà Rich đã có vào ngày đó vẫn còn trong bóng tối. Người duy nhất có thể trả lời câu hỏi này là Rich. Đối với Clojure chúng tôi đang ở một vị trí may mắn, cho vũ trụ .... – kotarak