         attr-map (let [m (first args)]
                    (when (map? m) m))
         args (if attr-map (rest args) args)
-        private? (:private attr-map)
+        private? (or (= 'defn- (first form))
+                     (:private meta-)
+                     (:private attr-map))
         doc-forms (cond-> []
                     docstring (conj docstring)
                     attr-map (conj attr-map))

;; Parse defs
;;--------------------------------------------------------------------------------

(defn parse-defn-or-macro
  [form]
  (let [type- ({'defn "function" 'defmacro "macro"} (first form))
        args (drop 2 form)
        docstring (let [ds (first args)]
                    (when (string? ds)

                         :head (take 2 form)
                         :doc doc-forms
                         :sig-body args})]
    (when (or *parse-private-defs?*
              (not private?))
      {:expected-docs expected-docs
       :docstring (fix-docstring docstring)
       :signature signatures
