Clojure syntax: defn- and ^:private
Making the distinction between pubiic and private has less importance in Clojure projects from an access point of view. Private vars can be accessed outside of their namespace scope using #'
There is value in highlighting which parts of a namespace represents the API of that namespace, to help developers use the right level of abstractions when working with that code (either as a library or as part of the project)
Its simply a matter of style as to which syntax should be used. Ideally the same syntax should be used throughout the project.
^:private is more explicit expression of the intent of the code.
http://blog.danieljanus.pl/2012/04/25/how-to-call-a-private-function-in-clojure/
https://github.com/bbatsov/clojure-style-guide/issues/124
defn- is here to stay Other var defining functions will not get a macro that provides a private version.