Như đã nêu bởi @kotarak, không có cách nào (theo như tôi biết) để làm điều đó, cũng không phải là mong muốn.
Đây là lý do tại sao tôi không thích defn-
:
tôi phát hiện ra rằng khi sử dụng các thư viện Clojure khác nhau đôi khi tôi cần một chút thay đổi một chức năng để phù hợp hơn với nhu cầu cụ thể của tôi. Nó thường là một cái gì đó khá nhỏ, và điều đó chỉ có ý nghĩa trong trường hợp cụ thể của tôi. Thường thì đây chỉ là một hoặc hai.
Nhưng khi chức năng này sử dụng lại các chức năng riêng bên trong, nó làm cho việc sửa đổi trở nên khó khăn hơn. Tôi phải sao chép-dán tất cả các chức năng riêng tư đó.
Tôi hiểu rằng đây là cách để người lập trình nói rằng "điều này có thể thay đổi mà không cần thông báo".
Bất kể, tôi muốn quy ước ngược lại:
- luôn luôn sử dụng
defn
, mà làm cho tất cả mọi thứ công
- sử dụng
defn+
(mà chưa hề tồn tại) để xác định để các lập trình viên có chức năng là một phần của API công khai mà anh ta định sử dụng. defn+
không được khác với defn
nếu không.
Cũng xin lưu ý rằng nó có thể access private functions anyway:
;; in namespace user
user> (defn- secret []
"TOP SECRET")
;; from another namespace
(#'user/secret) ;;=> "TOP SECRET"
Không chỉ là không có, nó sẽ thực sự gây rối với tâm trí của bất kỳ Clojurian khác nhìn vào mã như vậy. Tôi sẽ không khuyến khích nó ngay cả khi nó có thể làm được. –