Ba ngôn ngữ homoiconic lispy, Dylan, Julia và Seph tất cả di chuyển ra khỏi ngoặc hàng đầu - do đó, một chức năng cuộc gọi giả thuyết trong Common Lisp đó sẽ trông giống như:Clojure sẽ mất gì khi chuyển từ dấu ngoặc đơn hàng đầu như Dylan, Julia và Seph?
(print hello world)
sẽ trông giống như gọi hàm giả sau
print(hello world)
bằng ba ngôn ngữ được đề cập ở trên.
Được Clojure đi xuống con đường này - những gì nó sẽ phải hy sinh để đạt được điều đó?
Lý do: Ngoài cấu trúc dữ liệu chức năng lười biếng tuyệt vời trong Clojure và cú pháp cải tiến cho bản đồ và seq, hỗ trợ ngôn ngữ cho đồng thời, nền tảng JVM, công cụ và cộng đồng tuyệt vời - điều đặc biệt về nó 'LISP' là dấu ngoặc đơn hàng đầu cho tính đồng nhất cung cấp cho các macro cung cấp cú pháp trừu tượng.
Nhưng nếu bạn không cần dấu ngoặc đơn hàng đầu - tại sao lại có dấu ngoặc đơn? Những lập luận duy nhất tôi có thể nghĩ đến để giữ cho chúng được
(1) tái sử dụng công cụ hỗ trợ trong emacs
(2) khiến mọi người 'nghĩ trong LISP' và không cố gắng và coi nó như là một ngôn ngữ thủ tục)
Một phần quan trọng của thẩm mỹ lisp là parseability tầm thường và khả năng sử dụng như dữ liệu của mã; bạn sẽ mất một số điều đó. – zmccord
Ứng dụng chức năng chỉ là một trong nhiều hình thức có thể. Bạn đang đề xuất để đối xử với họ khác nhau? Clojure đã làm một điều khủng khiếp, bãi bỏ các tế bào khuyết điểm. Đi xa hơn sẽ hoàn toàn làm hỏng ngôn ngữ. –
Xem thêm http://stackoverflow.com/questions/643892/fixing-lisp-syntax. Câu hỏi này nhắc tôi về một nhà phát triển Pascal mà tôi biết ai, khi phải đối mặt với việc sử dụng C, muốn một tập các macro làm cho C trở nên giống Pascal hơn. Tôi nghĩ rằng luôn luôn có một sự cám dỗ để giảm bớt sự khó chịu của bạn với một cái gì đó mới bằng cách buộc nó giống như quen thuộc hơn. Và đôi khi nó là tốt cho bạn để tiếp cận một cái gì đó khác nhau về các điều khoản riêng của mình. – user100464