2011-06-21 35 views
11

Tôi vừa "phát hiện" macro đọc #= từ số post trên Stackoverflow và nó giải quyết được sự cố. Macro trình đọc này có khả năng trở thành một phần chính thức (được tài liệu) của ngôn ngữ là như thế nào? Bạn không được chấp nhận hoặc hành vi đã thay đổi như thế nào?Clojure # = macro đọc

Macro đọc #= làm cho biểu thức s sau được đánh giá bởi trình đọc Lisp (trước khi mở rộng macro).

Trả lời

4

Nó được sử dụng bởi ngôn ngữ cốt lõi khi một thứ được in với * in-dup * đúng, vì vậy tôi muốn đặt cược rằng nó sẽ ở lại. Không biết tại sao nó không được ghi lại.

user=> (binding [*print-dup* true] (prn {:foo 1 :bar 2})) 
#=(clojure.lang.PersistentArrayMap/create {:foo 1, :bar 2}) 
nil 
+0

Cảm ơn. Tôi cũng tự hỏi tại sao nó không được ghi lại. Nó sẽ hữu ích trong các macro để đánh giá một biểu thức con trước khi macro mở rộng. – Ralph

3

Nó không được ghi lại vì nó có thể biến mất/được thay bằng thứ khác. Tôi sẽ không khuyên bạn nên sử dụng nó trong các chương trình của bạn.

Các vấn đề liên quan