Tôi đang có một thời gian khó hiểu (và do đó nhớ) clojure yêu cầu cú pháp được mô tả ở đây: http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require. Dường như cả hai truy cập trực quan và không thống nhất.clojure yêu cầu lý do cú pháp
Ví dụ, trong những sản phẩm sau tại sao vector này yêu cầu phải được trích dẫn:
(require '[clj-json.core :as json])
Counter trực quan vì thông thường vectơ không được niêm yết trong clojure (danh sách được trích dẫn và vectơ được coi là dữ liệu).
Và không đồng nhất bởi vì trong trường hợp này các vector là không trích dẫn:
(ns xxx
(:require [clj-json.core :as json]))
Tôi nhận ra rằng các yêu cầu chức năng và :require
sử dụng bên trong ns vĩ mô chỉ có quang học tương tự, nhưng vẫn còn.
Có phần khác của weirdness là tốt, ví dụ như tôi có thể làm điều này:
(require '(clj-json.core))
Nhưng tôi không thể làm điều này:
(require '(clj-json.core :as json))
Ai đó có thể trả lời những câu hỏi sau:
- trong ví dụ đầu tiên tại sao vector cần phải được trích dẫn?
- tại sao không cần phải được trích dẫn trong macro ns?
- tại sao ký hiệu danh sách không cho phép
:as
?
Tôi tự hỏi nếu có lý do tại sao mọi thứ là như thế nào, hoặc nếu sự mâu thuẫn không được chú ý tại thời điểm thiết kế.
Check-out [chủ đề này] (https://groups.google.com/forum/?fromgroups#!searchin/clojure-dev/ns$20macro/clojure-dev/6EEfdPhrWgk/qJALczHTzpkJ) trên clojure -dev danh sách nếu bạn chưa nhìn thấy nó. Tôi tìm thấy nó khá nhiều thông tin. – Jeremy