(def joker-interns (set '(into instance? partial throw-if symbol empty second coll? sort-by some-> re-pattern val ns-unmap take-while ns-unalias min spread reset-meta! / assert-args condp bit-xor list? *loading-verbosely* loaded-libs select-keys with-in-str -> list* declare eval find *assert* split-at identical? cons__ filterv filter *e identity subvec bigfloat dec ratio? as-> bit-shift-right max__ nth subtract'__ pos__ fn inc__ multiply__ add__ - map? ==__ the-ns dec__ *loaded-libs* bigint some? bit-not denominator *in* update drop-last *ns* char? true? numerator interleave conj dec' *file* reduce-kv update-in seq__ count__ rest__ assert last concat with-meta__ cast__ keys frequencies first__ < assoc__ destructure re-seq replace-bindings split-with when-some hash-map__ fn? some bit-clear__ bit-shift-left__ neg__ unsigned-bit-shift-right__ bit-and__ bit-xor_ bit-flip__ distinct rem__ bit-test create-ns ns-interns max-key zero? -' ns-aliases__ bit-and-not find-ns__ ns-name__ keyword? remove-ns__ number? refer__ ns-unmap__ var-get__ next even? ns-resolve__ keyword__ mapv force__ <__ doall *pending-paths* array-map int__ symbol__ >__ special-symbol? lazy-seq__ dissoc in-ns compare__ repeat re-matches with-redefs-fn eval__ find-var__ doseq num__ set inc' vals__ when-first contains?__ ->> disj *' macroexpand-1 find__ dissoc__ unsigned-bit-shift-right name__ rest ex-info__ alter-meta__ = char swap__ peek sigs re-find__ bound? intern__ deref rand-int alias atom__ dorun associative? regex__ xml-seq special-symbol?__ prn nthrest *1 seq bigfloat? intern bit-set for int mapcat macroexpand-1__ double__ bigfloat__ denominator__ read__ dotimes var-set boolean__ with-out-str vector? take newline__ read-string__ with-redefs zipmap iterate not tree-seq load-lib re-find load-file__ when test bound?__ shuffle__ libspec? nfirst lib-path__ add-doc-and-meta reset-meta__ num println alter-meta! load-all quot slurp__ hash__ ns-name lazy-seq not-every? reset! memoize pos? and dedupe replace require get-in bit-shift-left *2 set? newline +' keep-indexed var? hash-map *linter-mode* *print-readably* interpose remove not-any? ns-map symbol? nil? distinct? defn- or comp cond-> hash-set flush str filter-key == cond key some->> list subs binding integer? slurp get range let rand some-fn ex-data inc force list__ not= not-empty defonce ns-aliases string? pop atom apply loop defmacro inc'__ load-string take-nth min__ multiply'__ keyword add'__ check-cyclic-dependency subtract__ divide__ >=__ dec'__ printf bit-flip * var-get if-let bit-or double public? *err* *out* sequential? >= time map-indexed with-bindings* read-string every-pred sort type hash cast *command-line-args* flatten pr with-bindings delay subvec__ prependss =__ hash-set__ rem next__ maybe-destructured refer neg? constantly instance?__ partition load conj__ meta__ cycle shuffle if-some vec__ ns-refers every? compare partition-by group-by vector vals *flush-on-newline* run! bit-or__ bit-test__ bit-set__ bit-not__ with-meta rseq reduce bit-and-not__ spit bit-shift-right__ sequence rand-nth peek__ quot__ butlast ns-map__ ns-unalias__ alias__ print cond->> all-ns__ var-ns__ var-set__ find-ns println-str when-let take-last array-map__ while > create-ns__ defn lazy-cat *3 all-ns <=__ gensym__ random-sample fake-var identical__ nth__ + find-var str__ delay__ apply__ zero?__ reverse meta keys__ when-not seq? nthnext contains? gensym ns-publics rseq__ type__ sort__ rational? mod pop__ false? disj__ namespace__ counted? get__ reductions macroexpand delay? realized? map boolean trampoline fnext print-str rand__ default-data-readers pr-str prn-str swap! ns subs__ reset__ deref__ format buffer__ re-seq__ set-meta__ if-not count ex-data__ reversible? comment vary-meta juxt assoc complement nnext vec keep assoc-in load-file resolve repeatedly remove-ns ns-resolve read-line__ char__ load-string__ empty? fnil bit-and bigint__ case flush__ merge-with numerator__ drop-while pr__ assert-valid-fdecl merge nano-time__ ffirst callable? read drop name index-of__ ex-info reduce-kv__ reduce__ namespace format__ realized?__ spit__ empty__ <= chunked-seq? first use load-one read-line max float? partition-all min-key odd? bit-clear cons load-libs)))

(defn arg-decls
  [arglists]
  (if (= 1 (count arglists))
    (str (first arglists))
    (clojure.string/join " " (map #(str "(" % ")") arglists))))

(defn decls
  [[sym v]]
  (let [m (meta v)
        arglists (:arglists m)]
    (when (and (not (clojure.string/starts-with? (str sym) "-"))
               (not (joker-interns sym))
               (seq arglists))
      (str "(defn " sym " " (arg-decls arglists) ")"))))

(println (clojure.string/join "\n" (keep decls (ns-interns 'cljs.core))))
