diff --git a/src/sci/impl/copy_vars.cljc b/src/sci/impl/copy_vars.cljc index 1acdeacf..2582933c 100644 --- a/src/sci/impl/copy_vars.cljc +++ b/src/sci/impl/copy_vars.cljc @@ -118,7 +118,10 @@ [sym] `(copy-var ~sym clojure-core-ns {:copy-meta-from ~(core-sym sym)})) - ) + (defmacro avoid-method-too-large [v] + (macros/? :clj + `(deref (delay ~v)) + :cljs v))) (defn macrofy* ([f] (vary-meta f #(assoc % :sci/macro true))) diff --git a/src/sci/impl/namespaces.cljc b/src/sci/impl/namespaces.cljc index f4f1958e..57465cc2 100644 --- a/src/sci/impl/namespaces.cljc +++ b/src/sci/impl/namespaces.cljc @@ -20,7 +20,7 @@ :cljs [cljs.reader :as edn]) #?(:clj [clojure.java.io :as jio]) #?(:clj [sci.impl.proxy :as proxy]) - #?(:clj [sci.impl.copy-vars :refer [copy-core-var copy-var macrofy new-var]] + #?(:clj [sci.impl.copy-vars :refer [copy-core-var copy-var macrofy new-var avoid-method-too-large]] :cljs [sci.impl.copy-vars :refer [new-var]]) #?(:cljs [sci.impl.resolve]) [clojure.set :as set] @@ -48,7 +48,7 @@ [sci.impl.vars :as vars] [sci.lang]) #?(:cljs (:require-macros - [sci.impl.copy-vars :refer [copy-var copy-core-var macrofy]]))) + [sci.impl.copy-vars :refer [copy-var copy-core-var macrofy avoid-method-too-large]]))) #?(:clj (set! *warn-on-reflection* true)) @@ -1069,612 +1069,644 @@ (macros/usetime - (def clojure-core* - {:obj clojure-core-ns - '*ns* sci.impl.utils/current-ns - ;; io - '*in* sci.impl.io/in - '*out* sci.impl.io/out - '*err* sci.impl.io/err - '*file* sci.impl.utils/current-file - '*flush-on-newline* sci.impl.io/flush-on-newline - #?@(:cljs ['*print-fn* sci.impl.io/print-fn - '*print-err-fn* sci.impl.io/print-err-fn]) - '*print-length* sci.impl.io/print-length - '*print-level* sci.impl.io/print-level - '*print-meta* sci.impl.io/print-meta - '*print-namespace-maps* sci.impl.io/print-namespace-maps - '*print-readably* sci.impl.io/print-readably - '*print-dup* sci.impl.io/print-dup-var - #?@(:cljs ['*print-newline* sci.impl.io/print-newline]) - 'newline (copy-var sci.impl.io/newline clojure-core-ns {:name 'newline}) - 'flush (copy-core-var sci.impl.io/flush) - 'pr (copy-var sci.impl.io/pr clojure-core-ns {:name 'pr}) - 'prn (copy-core-var sci.impl.io/prn) - 'print (copy-core-var sci.impl.io/print) - 'println (copy-core-var sci.impl.io/println) - 'pr-str (copy-core-var sci.impl.io/pr-str) - 'prn-str (copy-core-var sci.impl.io/prn-str) - 'print-str (copy-core-var #?(:cljs sci.impl.io/print-str :clj print-str)) - #?@(:clj ['print-method (copy-core-var print-method)]) - #?@(:clj ['print-dup (copy-core-var print-dup)]) - #?@(:clj ['printf (copy-core-var sci.impl.io/printf)]) - 'with-out-str (macrofy 'with-out-str sci.impl.io/with-out-str) - #?@(:clj ['with-in-str (macrofy 'with-in-str sci.impl.io/with-in-str) - 'read-line (copy-core-var sci.impl.io/read-line)]) - ;; end io - ;; read - '*data-readers* parser/data-readers - '*default-data-reader-fn* parser/default-data-reader-fn - '*read-eval* parser/read-eval - '*reader-resolver* parser/reader-resolver - 'read (copy-var read clojure-core-ns {:ctx true :copy-meta-from 'clojure.core/read}) - 'read-string (copy-var read-string clojure-core-ns {:copy-meta-from 'clojure.core/read-string :ctx true}) - #?@(:clj ['reader-conditional (copy-core-var reader-conditional)]) - #?@(:clj ['reader-conditional? (copy-core-var reader-conditional?)]) - ;; end read - ;; REPL variables - '*1 *1 - '*2 *2 - '*3 *3 - '*e *e - ;; end REPL variables - ;; clojure version - #?@(:clj ['*clojure-version* clojure-version-var - 'clojure-version (copy-core-var clojure-version)]) - ;; end clojure version - ;; multimethods - 'defmulti (macrofy 'defmulti sci.impl.multimethods/defmulti - clojure-core-ns true) - 'defmethod (macrofy 'defmethod sci.impl.multimethods/defmethod) - 'get-method (copy-core-var get-method) - 'methods (copy-core-var methods) - 'multi-fn-add-method-impl (copy-core-var sci.impl.multimethods/multi-fn-add-method-impl) - 'multi-fn?-impl (copy-core-var sci.impl.multimethods/multi-fn?-impl) - 'multi-fn-impl (copy-core-var sci.impl.multimethods/multi-fn-impl) - 'prefer-method (copy-core-var prefer-method) - 'prefers (copy-core-var prefers) - 'remove-method (copy-core-var remove-method) - 'remove-all-methods (copy-core-var remove-all-methods) - ;; end multimethods - ;; protocols - 'defprotocol (macrofy 'defprotocol sci.impl.protocols/defprotocol - clojure-core-ns true) - 'extend (copy-var sci.impl.protocols/extend clojure-core-ns {:name 'extend :ctx true}) - 'extends? (copy-core-var sci.impl.protocols/extends?) - 'extend-type (macrofy 'extend-type sci.impl.protocols/extend-type - clojure-core-ns true) - 'extend-protocol (macrofy 'extend-protocol sci.impl.protocols/extend-protocol - clojure-core-ns true) - '-reified-methods (new-var '-reified-methods #(types/getMethods %)) - 'reify* (new-var 'reify* reify/reify* clojure-core-ns true) - 'reify (macrofy 'reify reify/reify clojure-core-ns true) - 'protocol-type-impl (new-var 'protocol-type-impl types/type-impl) - #?@(:clj ['proxy* (new-var 'proxy* proxy/proxy* true) - 'proxy (macrofy 'proxy proxy/proxy clojure-core-ns true)]) - 'satisfies? (copy-var sci.impl.protocols/satisfies? clojure-core-ns {:name 'satisfies?}) - ;; end protocols - ;; IDeref as protocol - 'deref (copy-var core-protocols/deref* clojure-core-ns {:name 'deref}) - #?@(:cljs ['-deref (new-var '-deref core-protocols/-deref) - 'IDeref core-protocols/deref-protocol]) - ;; end IDeref as protocol - ;; IAtom / ISwap as protocol - 'swap! (copy-var core-protocols/swap!* clojure-core-ns {:name 'swap!}) - 'compare-and-set! #?(:clj (copy-var core-protocols/compare-and-set!* clojure-core-ns {:name 'compare-and-set!}) - :cljs (copy-core-var compare-and-set!)) - #?@(:cljs ['IReset core-protocols/reset-protocol - 'ISwap core-protocols/swap-protocol - '-swap! (new-var '-swap! core-protocols/-swap!) - '-reset! (new-var '-reset! core-protocols/-reset!)]) - ;; in CLJS swap-vals! and reset-vals! are going through the other protocols - #?@(:clj ['swap-vals! (copy-var core-protocols/swap-vals!* clojure-core-ns {:name 'swap-vals!}) - 'reset-vals! (copy-var core-protocols/reset-vals!* clojure-core-ns {:name 'reset-vals!})]) - - #?@(:cljs ['IRecord (utils/new-var 'IRecord {:protocol IRecord :ns clojure-core-ns} - {:ns clojure-core-ns})]) - ;; cljs data structures - #?@(:cljs ['Delay (copy-var Delay clojure-core-ns)]) - #?@(:cljs ['PersistentQueue (copy-var PersistentQueue clojure-core-ns)]) - #?@(:cljs ['LazySeq (copy-var LazySeq clojure-core-ns)]) - ;; end cljs data structures - ;; private - 'has-root-impl (copy-core-var has-root-impl) - ;; used in with-local-vars - '-new-dynamic-var (new-var '-new-dynamic-var #(sci.impl.utils/new-var (gensym) nil {:dynamic true})) - ;; used in let-fn - '-new-var (new-var '-new-var #(sci.impl.utils/new-var (gensym) nil)) - '-add-loaded-lib (copy-var -add-loaded-lib clojure-core-ns {:ctx true}) - ;; end private - '.. (macrofy '.. double-dot) - '= (copy-core-var =) - '< (copy-core-var <) - '<= (copy-core-var <=) - '> (copy-core-var >) - '>= (copy-core-var >=) - '+ (copy-core-var +) - '- (copy-core-var -) - '* (copy-core-var *) - '/ (copy-core-var /) - '== (copy-core-var ==) - '-> (macrofy '-> ->*) - '->> (macrofy '->> ->>*) - 'as-> (macrofy 'as-> as->*) - 'comment (macrofy 'comment comment*) - 'add-watch (copy-core-var add-watch) - 'remove-watch (copy-core-var remove-watch) - 'aclone (copy-core-var aclone) - 'aget (copy-core-var aget) - 'alias (copy-var sci-alias clojure-core-ns {:name 'alias :ctx true}) - 'all-ns (copy-var sci-all-ns clojure-core-ns {:name 'all-ns :ctx true}) - 'alter-meta! (copy-core-var alter-meta!) - 'alter-var-root (copy-core-var sci.impl.vars/alter-var-root) - 'amap (macrofy 'amap amap*) - 'ancestors (copy-var hierarchies/ancestors* clojure-core-ns {:name 'ancestors :ctx true}) - 'and (macrofy 'and and*) - #?@(:clj ['aset (copy-var aset* clojure-core-ns {:name 'aset})] - :default ['aset (copy-core-var aset)]) - #?@(:clj ['aset-boolean (copy-core-var aset-boolean) - 'aset-byte (copy-core-var aset-byte) - 'aset-char (copy-core-var aset-char) - 'aset-double (copy-core-var aset-double) - 'aset-float (copy-core-var aset-float) - 'aset-int (copy-core-var aset-int) - 'aset-long (copy-core-var aset-long) - 'aset-short (copy-core-var aset-short)]) - 'alength #?(:clj (copy-var alength clojure-core-ns {:inlined - (fn [arr] - (java.lang.reflect.Array/getLength arr))}) - :cljs (copy-core-var alength)) - 'any? (copy-core-var any?) - 'apply (copy-core-var apply) - 'areduce (macrofy 'areduce areduce*) - #?@(:cljs ['array? (copy-core-var array?)]) - #?@(:cljs ['array (copy-core-var array)]) - 'array-map (copy-core-var array-map) - '*assert* assert-var - 'assert (macrofy 'assert assert*) - 'assoc (copy-core-var assoc) - 'assoc! (copy-core-var assoc!) - 'assoc-in (copy-core-var assoc-in) - 'associative? (copy-core-var associative?) - 'atom (copy-core-var atom) - #?@(:clj ['bean (copy-core-var bean)]) - 'binding (macrofy 'binding sci-binding) - 'binding-conveyor-fn (copy-core-var sci.impl.vars/binding-conveyor-fn) - 'bit-and-not (copy-core-var bit-and-not) - #?@(:clj ['bit-clear (copy-core-var bit-clear)]) - 'bit-set (copy-core-var bit-set) - 'bit-shift-left (copy-core-var bit-shift-left) - 'bit-shift-right (copy-core-var bit-shift-right) - 'bit-xor (copy-core-var bit-xor) - 'bound? (copy-var sci-bound? clojure-core-ns {:name 'bound?}) - 'boolean (copy-core-var boolean) - 'boolean? (copy-core-var boolean?) - 'booleans (copy-core-var booleans) - 'butlast (copy-core-var butlast) - 'bytes (copy-core-var bytes) - 'bit-test (copy-core-var bit-test) - 'bit-and (copy-core-var bit-and) - 'bound-fn (macrofy 'bound-fn sci-bound-fn) - 'bound-fn* (copy-var bound-fn* clojure-core-ns) - 'bounded-count (copy-core-var bounded-count) - 'bit-or (copy-core-var bit-or) - 'bit-flip (copy-core-var bit-flip) - 'bit-not (copy-core-var bit-not) - 'byte (copy-core-var byte) - 'cat (copy-core-var cat) - 'case (macrofy 'case case**) - 'char (copy-core-var char) - 'char? (copy-core-var char?) - #?@(:clj ['class? (copy-core-var class?)]) - #?@(:cljs ['clj->js (copy-core-var clj->js)]) - 'cond (macrofy 'cond cond*) - 'cond-> (macrofy 'cond-> cond->*) - 'cond->> (macrofy 'cond->> cond->>*) - 'condp (macrofy 'condp condp*) - 'conj (copy-core-var conj) - 'conj! (copy-core-var conj!) - 'cons (copy-core-var cons) - 'contains? (copy-core-var contains?) - 'count (copy-core-var count) - 'cycle (copy-core-var cycle) - 'comp (copy-core-var comp) - 'concat (copy-core-var concat) - 'comparator (copy-core-var comparator) - 'coll? (copy-core-var coll?) - 'compare (copy-core-var compare) - 'complement (copy-core-var complement) - 'constantly (copy-core-var constantly) - 'chars (copy-core-var chars) - 'completing (copy-core-var completing) - 'counted? (copy-core-var counted?) - 'chunk (copy-core-var chunk) - 'chunk-append (copy-core-var chunk-append) - 'chunk-buffer (copy-core-var chunk-buffer) - 'chunk-cons (copy-core-var chunk-cons) - 'chunk-first (copy-core-var chunk-first) - 'chunk-rest (copy-core-var chunk-rest) - 'chunk-next (copy-core-var chunk-next) - 'chunked-seq? (copy-core-var chunked-seq?) - 'dec (copy-core-var dec) - 'declare (macrofy 'declare declare*) - 'dedupe (copy-core-var dedupe) - 'defmacro (macrofy 'defmacro fns/defmacro*) - 'defn (macrofy 'defn fns/defn*) - 'defn- (macrofy 'defn- defn-*) - 'defonce (macrofy 'defonce defonce*) - 'defrecord (macrofy 'defrecord sci.impl.records/defrecord + (def clojure-core + (avoid-method-too-large + {:obj clojure-core-ns + '*ns* sci.impl.utils/current-ns + ;; io + '*in* sci.impl.io/in + '*out* sci.impl.io/out + '*err* sci.impl.io/err + '*file* sci.impl.utils/current-file + '*flush-on-newline* sci.impl.io/flush-on-newline + #?@(:cljs ['*print-fn* sci.impl.io/print-fn + '*print-err-fn* sci.impl.io/print-err-fn]) + '*print-length* sci.impl.io/print-length + '*print-level* sci.impl.io/print-level + '*print-meta* sci.impl.io/print-meta + '*print-namespace-maps* sci.impl.io/print-namespace-maps + '*print-readably* sci.impl.io/print-readably + '*print-dup* sci.impl.io/print-dup-var + #?@(:cljs ['*print-newline* sci.impl.io/print-newline]) + 'newline (copy-var sci.impl.io/newline clojure-core-ns {:name 'newline}) + 'flush (copy-core-var sci.impl.io/flush) + 'pr (copy-var sci.impl.io/pr clojure-core-ns {:name 'pr}) + 'prn (copy-core-var sci.impl.io/prn) + 'print (copy-core-var sci.impl.io/print) + 'println (copy-core-var sci.impl.io/println) + 'pr-str (copy-core-var sci.impl.io/pr-str) + 'prn-str (copy-core-var sci.impl.io/prn-str) + 'print-str (copy-core-var #?(:cljs sci.impl.io/print-str :clj print-str)) + #?@(:clj ['print-method (copy-core-var print-method)]) + #?@(:clj ['print-dup (copy-core-var print-dup)]) + #?@(:clj ['printf (copy-core-var sci.impl.io/printf)]) + 'with-out-str (macrofy 'with-out-str sci.impl.io/with-out-str) + #?@(:clj ['with-in-str (macrofy 'with-in-str sci.impl.io/with-in-str) + 'read-line (copy-core-var sci.impl.io/read-line)]) + ;; end io + ;; read + '*data-readers* parser/data-readers + '*default-data-reader-fn* parser/default-data-reader-fn + '*read-eval* parser/read-eval + '*reader-resolver* parser/reader-resolver + 'read (copy-var read clojure-core-ns {:ctx true :copy-meta-from 'clojure.core/read}) + 'read-string (copy-var read-string clojure-core-ns {:copy-meta-from 'clojure.core/read-string :ctx true}) + #?@(:clj ['reader-conditional (copy-core-var reader-conditional)]) + #?@(:clj ['reader-conditional? (copy-core-var reader-conditional?)]) + ;; end read + ;; REPL variables + '*1 *1 + '*2 *2 + '*3 *3 + '*e *e + ;; end REPL variables + ;; clojure version + #?@(:clj ['*clojure-version* clojure-version-var + 'clojure-version (copy-core-var clojure-version)]) + ;; end clojure version + ;; multimethods + 'defmulti (macrofy 'defmulti sci.impl.multimethods/defmulti clojure-core-ns true) - 'deftype (macrofy 'deftype sci.impl.deftype/deftype - clojure-core-ns true) - 'delay (macrofy 'delay delay*) - 'delay? (copy-core-var delay?) - #?@(:clj ['deliver (copy-core-var deliver)]) - #?@(:cljs ['demunge (copy-core-var cljs.core/demunge)]) - 'derive (copy-var hierarchies/derive* clojure-core-ns {:name 'derive :ctx true}) - 'descendants (copy-var hierarchies/descendants* clojure-core-ns {:name 'descendants :ctx true}) - 'destructure (copy-var destructure/destructure clojure-core-ns) - 'dissoc (copy-core-var dissoc) - 'dissoc! (copy-core-var dissoc!) - 'distinct (copy-core-var distinct) - 'distinct? (copy-core-var distinct?) - 'disj (copy-core-var disj) - 'disj! (copy-core-var disj!) - 'doall (copy-core-var doall) - 'dorun (copy-core-var dorun) - 'doseq (macrofy 'doseq doseq-macro/expand-doseq) - 'dotimes (macrofy 'dotimes dotimes*) - 'doto (macrofy 'doto doto*) - 'double (copy-core-var double) - 'double-array (copy-core-var double-array) - 'double? (copy-core-var double?) - 'drop (copy-core-var drop) - 'drop-last (copy-core-var drop-last) - 'drop-while (copy-core-var drop-while) - 'doubles (copy-core-var doubles) - 'eduction (copy-core-var eduction) - '->Eduction (copy-core-var ->Eduction) - 'empty (copy-core-var empty) - 'empty? (copy-core-var empty?) - #?@(:clj ['enumeration-seq (copy-core-var enumeration-seq)]) - 'eval (copy-var eval clojure-core-ns {:copy-meta-from 'clojure.core/eval - :ctx true}) - 'even? (copy-core-var even?) - 'every? (copy-core-var every?) - 'every-pred (copy-core-var every-pred) - 'ensure-reduced (copy-core-var ensure-reduced) - 'ex-data (copy-core-var ex-data) - 'ex-info (copy-core-var ex-info) - 'ex-message (copy-core-var ex-message) - 'ex-cause (copy-core-var ex-cause) - #?@(:cljs ['exists? (copy-var exists? clojure-core-ns {:macro true - :ctx true - :name 'exists?})]) - 'find-ns (copy-var sci-find-ns clojure-core-ns {:ctx true :name 'find-ns}) - 'create-ns (copy-var sci-create-ns clojure-core-ns {:ctx true :name 'create-ns}) - 'in-ns (copy-var sci-in-ns clojure-core-ns {:ctx true :name 'in-ns}) - 'find-var (copy-var sci-find-var clojure-core-ns {:name 'find-var - :ctx true}) - 'first (copy-core-var first) - 'float? (copy-core-var float?) - 'floats (copy-core-var floats) - 'fn (macrofy 'fn fns/fn**) - 'fnil (copy-core-var fnil) - 'fnext (copy-core-var fnext) - 'ffirst (copy-core-var ffirst) - 'flatten (copy-core-var flatten) - 'false? (copy-core-var false?) - 'filter (copy-core-var filter) - 'filterv (copy-core-var filterv) - 'find (copy-core-var find) - 'frequencies (copy-core-var frequencies) - 'float (copy-core-var float) - 'fn? (copy-core-var fn?) - 'for (macrofy 'for for-macro/expand-for) - 'force (copy-core-var force) - 'get (copy-core-var get) - 'get-thread-binding-frame-impl (new-var 'get-thread-binding-frame-impl sci.impl.vars/get-thread-binding-frame) - #?@(:clj ['get-thread-bindings (copy-var sci.impl.vars/get-thread-bindings clojure-core-ns {:name 'get-thread-bindings})]) - 'get-in (copy-core-var get-in) - 'group-by (copy-core-var group-by) - 'gensym (copy-core-var gensym) - 'halt-when (copy-core-var halt-when) - 'hash (copy-core-var hash) - 'hash-combine (copy-core-var hash-combine) - 'hash-map (copy-core-var hash-map) - 'hash-set (copy-core-var hash-set) - 'hash-ordered-coll (copy-core-var hash-ordered-coll) - 'hash-unordered-coll (copy-core-var hash-unordered-coll) - 'ident? (copy-core-var ident?) - 'identical? (copy-core-var identical?) - 'identity (copy-core-var identity) - 'if-let (macrofy 'if-let if-let*) - 'if-some (macrofy 'if-some if-some*) - 'if-not (macrofy 'if-not if-not*) - 'ifn? (copy-core-var ifn?) - 'inc (copy-core-var inc) - 'inst? (copy-core-var inst?) - 'inst-ms (copy-core-var inst-ms) - 'instance? (copy-var protocols/instance-impl clojure-core-ns {:name 'instance?}) - 'int-array (copy-core-var int-array) - 'interleave (copy-core-var interleave) - 'intern (copy-var sci-intern clojure-core-ns {:name 'intern :ctx true}) - 'into (copy-core-var into) - 'iterate (copy-core-var iterate) - #?@(:clj ['iterator-seq (copy-core-var iterator-seq)]) - 'int (copy-core-var int) - 'int? (copy-core-var int?) - 'interpose (copy-core-var interpose) - 'indexed? (copy-core-var indexed?) - 'integer? (copy-core-var integer?) - 'ints (copy-core-var ints) - 'into-array (copy-core-var into-array) - 'isa? (copy-var hierarchies/isa?* clojure-core-ns {:ctx true - :name 'isa?}) - #?@(:cljs ['js->clj (copy-core-var js->clj)]) - #?@(:cljs ['js-obj (copy-core-var js-obj)]) - #?@(:cljs ['js-keys (copy-core-var js-keys)]) - #?@(:cljs ['js-delete (copy-core-var js-delete)]) - 'juxt (copy-core-var juxt) - 'keep (copy-core-var keep) - 'keep-indexed (copy-core-var keep-indexed) - 'key (copy-core-var key) - 'keys (copy-core-var keys) - 'keyword (copy-core-var keyword) - 'keyword? (copy-core-var keyword?) - #?@(:cljs ['keyword-identical? (copy-core-var keyword-identical?)]) - 'last (copy-core-var last) - 'lazy-seq (macrofy 'lazy-seq lazy-seq*) - 'lazy-cat (macrofy 'lazy-cat lazy-cat*) - 'let (macrofy 'let let**) - 'letfn (macrofy 'letfn letfn*) - 'load-string (copy-var load-string clojure-core-ns {:copy-meta-from 'clojure.core/load-string :ctx true}) - 'loaded-libs (copy-var loaded-libs* clojure-core-ns {:name 'loaded-libs :ctx true}) - 'loop (macrofy 'loop loop**) - 'long (copy-core-var long) - 'list (copy-core-var list) - 'list? (copy-core-var list?) - 'longs (copy-core-var longs) - 'list* (copy-core-var list*) - 'long-array (copy-core-var long-array) - 'macroexpand (copy-var macroexpand* clojure-core-ns {:name 'macroexpand - :ctx true}) - 'macroexpand-1 (copy-var macroexpand-1* clojure-core-ns {:name 'macroexpand-1 - :ctx true}) - 'make-array (copy-core-var make-array) - 'make-hierarchy (copy-core-var make-hierarchy) - 'map (copy-core-var map) - 'map? (copy-core-var map?) - 'map-indexed (copy-core-var map-indexed) - 'map-entry? (copy-core-var map-entry?) - 'mapv (copy-core-var mapv) - 'mapcat (copy-core-var mapcat) - 'max (copy-core-var max) - 'max-key (copy-core-var max-key) - 'meta (copy-core-var meta) - 'memfn (copy-var memfn clojure-core-ns {:macro true}) - 'memoize (copy-core-var memoize) - 'merge (copy-core-var merge) - 'merge-with (copy-core-var merge-with) - 'min (copy-core-var min) - 'min-key (copy-core-var min-key) - 'munge (copy-core-var munge) - 'mod (copy-core-var mod) - 'name (copy-core-var name) - 'namespace (copy-core-var namespace) - 'nfirst (copy-core-var nfirst) - 'not (copy-core-var not) - 'not= (copy-core-var not=) - 'not-every? (copy-core-var not-every?) - 'neg? (copy-core-var neg?) - 'neg-int? (copy-core-var neg-int?) - 'nth (copy-core-var nth) - 'nthnext (copy-core-var nthnext) - 'nthrest (copy-core-var nthrest) - 'nil? (copy-core-var nil?) - 'nat-int? (copy-core-var nat-int?) - 'ns (macrofy 'ns ns*) - 'ns-resolve (copy-var sci-ns-resolve clojure-core-ns {:ctx true :name 'ns-resolve}) - 'number? (copy-core-var number?) - 'not-empty (copy-core-var not-empty) - 'not-any? (copy-core-var not-any?) - 'next (copy-core-var next) - 'nnext (copy-core-var nnext) - 'ns-aliases (copy-var sci-ns-aliases clojure-core-ns {:ctx true :name 'ns-aliases}) - 'ns-imports (copy-var sci-ns-imports clojure-core-ns {:ctx true :name 'ns-imports}) - 'ns-interns (copy-var sci-ns-interns clojure-core-ns {:ctx true :name 'ns-interns}) - 'ns-publics (copy-var sci-ns-publics clojure-core-ns {:ctx true :name 'ns-publics}) - 'ns-refers (copy-var sci-ns-refers clojure-core-ns {:ctx true :name 'ns-refers}) - 'ns-map (copy-var sci-ns-map clojure-core-ns {:name 'ns-map :ctx true}) - 'ns-unmap (copy-var sci-ns-unmap clojure-core-ns {:ctx true :name 'ns-unmap}) - 'ns-unalias (copy-var sci-ns-unalias clojure-core-ns {:ctx true :name 'ns-unalias}) - 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name}) - 'odd? (copy-core-var odd?) - #?@(:cljs ['object? (copy-core-var object?)]) - 'object-array (copy-core-var object-array) - 'or (macrofy 'or or*) - 'parents (copy-var hierarchies/parents* clojure-core-ns {:name 'parents :ctx true}) - 'peek (copy-core-var peek) - 'pop (copy-core-var pop) - 'pop! (copy-core-var pop!) - 'pop-thread-bindings (copy-core-var sci.impl.vars/pop-thread-bindings) - 'pos? (copy-core-var pos?) - 'pos-int? (copy-core-var pos-int?) - 'partial (copy-core-var partial) - 'partition (copy-core-var partition) - 'partition-all (copy-core-var partition-all) - 'partition-by (copy-core-var partition-by) - 'persistent! (copy-core-var persistent!) - #?@(:clj ['promise (copy-core-var promise)]) - 'push-thread-bindings (copy-var sci.impl.vars/push-thread-bindings clojure-core-ns {:name 'push-thread-bindings}) - 'qualified-ident? (copy-core-var qualified-ident?) - 'qualified-symbol? (copy-core-var qualified-symbol?) - 'qualified-keyword? (copy-core-var qualified-keyword?) - 'quot (copy-core-var quot) - #?@(:cljs ['random-uuid (copy-core-var random-uuid)]) - 're-seq (copy-core-var re-seq) - 'refer (copy-var sci-refer clojure-core-ns {:name 'refer :ctx true}) - 'refer-clojure (macrofy 'refer-clojure sci-refer-clojure) - 're-find (copy-core-var re-find) - #?@(:clj ['re-groups (copy-core-var re-groups)]) - 're-pattern (copy-core-var re-pattern) - #?@(:clj ['re-matcher (copy-core-var re-matcher)]) - 're-matches (copy-core-var re-matches) - 'realized? (copy-core-var realized?) - 'rem (copy-core-var rem) - 'remove (copy-core-var remove) - 'remove-ns (copy-var sci-remove-ns clojure-core-ns {:ctx true :name 'remove-ns}) - 'require (copy-var require clojure-core-ns {:ctx true :copy-meta-from 'clojure.core/require}) - 'reset-meta! (copy-core-var reset-meta!) - 'rest (copy-core-var rest) - 'repeatedly (copy-core-var repeatedly) - 'reverse (copy-core-var reverse) - 'rand-int (copy-core-var rand-int) - 'rand-nth (copy-core-var rand-nth) - 'range (copy-core-var range) - 'record? (copy-core-var record?) - 'reduce (copy-core-var reduce) - 'reduce-kv (copy-core-var reduce-kv) - 'reduced (copy-core-var reduced) - 'reduced? (copy-core-var reduced?) - 'reset! (copy-var core-protocols/reset!* clojure-core-ns {:name 'reset!}) - 'reset-thread-binding-frame-impl (new-var 'reset-thread-binding-frame-impl sci.impl.vars/reset-thread-binding-frame) - 'resolve (copy-var sci-resolve clojure-core-ns {:name 'resolve :ctx true}) - 'reversible? (copy-core-var reversible?) - 'rsubseq (copy-core-var rsubseq) - 'reductions (copy-core-var reductions) - 'rand (copy-core-var rand) - 'replace (copy-core-var replace) - 'rseq (copy-core-var rseq) - 'random-sample (copy-core-var random-sample) - 'repeat (copy-core-var repeat) - 'requiring-resolve (copy-var sci-requiring-resolve clojure-core-ns {:ctx true :name 'requiring-resolve}) - 'run! (copy-core-var run!) - 'set? (copy-core-var set?) - 'sequential? (copy-core-var sequential?) - 'select-keys (copy-core-var select-keys) - #?@(:clj ['short-array (copy-core-var short-array)]) - 'simple-keyword? (copy-core-var simple-keyword?) - 'simple-symbol? (copy-core-var simple-symbol?) - 'some? (copy-core-var some?) - 'some-> (macrofy 'some-> some->*) - 'some->> (macrofy 'some->> some->>*) - 'string? (copy-core-var string?) - 'str (copy-core-var str) - 'second (copy-core-var second) - 'set (copy-core-var set) - 'seq (copy-core-var seq) - 'seq-to-map-for-destructuring (copy-var seq-to-map-for-destructuring clojure-core-ns) - 'seq? (copy-core-var seq?) - 'short (copy-core-var short) - 'shuffle (copy-core-var shuffle) - 'sort (copy-core-var sort) - 'sort-by (copy-core-var sort-by) - ;; #?@(:cljs ['-js-this -js-this - ;; 'this-as (macrofy 'this-as this-as clojure-core-ns)]) - 'test (copy-core-var test) - 'thread-bound? (copy-var sci-thread-bound? clojure-core-ns {:name 'thread-bound?}) - 'time (copy-var time clojure-core-ns {:macro true}) - 'subs (copy-core-var subs) - #?@(:clj ['supers (copy-core-var supers)]) - 'symbol (copy-var symbol* clojure-core-ns {:name 'symbol}) - 'symbol? (copy-core-var symbol?) - 'system-time (copy-var #?(:clj system-time - :cljs system-time) clojure-core-ns) - 'special-symbol? (copy-core-var special-symbol?) - 'subvec (copy-core-var subvec) - 'some-fn (copy-core-var some-fn) - 'some (copy-core-var some) - 'split-at (copy-core-var split-at) - 'split-with (copy-core-var split-with) - 'sorted-set (copy-core-var sorted-set) - 'subseq (copy-core-var subseq) - 'sorted-set-by (copy-core-var sorted-set-by) - 'sorted-map-by (copy-core-var sorted-map-by) - 'sorted-map (copy-core-var sorted-map) - 'sorted? (copy-core-var sorted?) - 'simple-ident? (copy-core-var simple-ident?) - 'sequence (copy-core-var sequence) - 'seqable? (copy-core-var seqable?) - 'shorts (copy-core-var shorts) - 'tagged-literal (copy-core-var tagged-literal) - 'tagged-literal? (copy-core-var tagged-literal?) - 'take (copy-core-var take) - 'take-last (copy-core-var take-last) - 'take-nth (copy-core-var take-nth) - 'take-while (copy-core-var take-while) - 'the-ns (copy-var sci-the-ns clojure-core-ns {:name 'the-ns :ctx true}) - 'trampoline (copy-core-var trampoline) - 'transduce (copy-core-var transduce) - 'transient (copy-core-var transient) - 'tree-seq (copy-core-var tree-seq) - 'type (copy-var sci.impl.types/type-impl2 clojure-core-ns {:name 'type}) - 'true? (copy-core-var true?) - 'to-array (copy-core-var to-array) - 'to-array-2d (copy-core-var to-array-2d) - 'update (copy-core-var update) - 'update-in (copy-core-var update-in) - 'uri? (copy-core-var uri?) - 'uuid? (copy-core-var uuid?) - 'unchecked-dec (copy-core-var unchecked-dec) - 'unchecked-inc-int (copy-core-var unchecked-inc-int) - 'unchecked-long (copy-core-var unchecked-long) - 'unchecked-negate (copy-core-var unchecked-negate) - 'unchecked-remainder-int (copy-core-var unchecked-remainder-int) - 'unchecked-subtract-int (copy-core-var unchecked-subtract-int) - 'unsigned-bit-shift-right (copy-core-var unsigned-bit-shift-right) - 'unchecked-float (copy-core-var unchecked-float) - 'unchecked-add-int (copy-core-var unchecked-add-int) - 'unchecked-double (copy-core-var unchecked-double) - 'unchecked-multiply-int (copy-core-var unchecked-multiply-int) - 'unchecked-int (copy-core-var unchecked-int) - 'unchecked-multiply (copy-core-var unchecked-multiply) - 'unchecked-dec-int (copy-core-var unchecked-dec-int) - 'unchecked-add (copy-core-var unchecked-add) - 'unreduced (copy-core-var unreduced) - 'unchecked-divide-int (copy-core-var unchecked-divide-int) - 'unchecked-subtract (copy-core-var unchecked-subtract) - 'unchecked-negate-int (copy-core-var unchecked-negate-int) - 'unchecked-inc (copy-core-var unchecked-inc) - 'unchecked-char (copy-core-var unchecked-char) - 'unchecked-byte (copy-core-var unchecked-byte) - 'unchecked-short (copy-core-var unchecked-short) - #?@(:cljs ['undefined? (copy-core-var undefined?)]) - 'underive (copy-var hierarchies/underive* clojure-core-ns {:name 'underive :ctx true}) - 'unquote (doto (sci.impl.utils/new-var 'unquote nil {:ns clojure-core-ns}) - (sci.impl.vars/unbind)) - 'use (copy-var use clojure-core-ns {:ctx true :copy-meta-from 'clojure.core/use}) - 'val (copy-core-var val) - 'vals (copy-core-var vals) - 'var? (copy-var sci.impl.utils/var? clojure-core-ns {:name 'var?}) - 'var-get (copy-var sci.impl.vars/var-get clojure-core-ns {:name 'var-get}) - 'var-set (copy-var sci.impl.vars/var-set clojure-core-ns {:name 'var-set}) - 'vary-meta (copy-core-var vary-meta) - 'vec (copy-core-var vec) - 'vector (copy-core-var vector) - 'vector? (copy-core-var vector?) - 'volatile! (copy-core-var volatile!) - 'volatile? (copy-core-var volatile?) - 'vreset! (copy-core-var vreset!) - 'vswap! (macrofy 'vswap! vswap!) - 'when-first (macrofy 'when-first when-first*) - 'when-let (macrofy 'when-let when-let*) - 'when-some (macrofy 'when-some when-some*) - 'when (macrofy 'when when*) - 'when-not (macrofy 'when-not when-not*) - 'while (macrofy 'while while*) - 'with-bindings (macrofy 'with-bindings sci-with-bindings) - 'with-bindings* (copy-var with-bindings* clojure-core-ns) - 'with-local-vars (macrofy 'with-local-vars with-local-vars*) - 'with-meta (copy-core-var with-meta) - 'with-open (macrofy 'with-open with-open*) - 'with-redefs-fn (copy-var sci-with-redefs-fn clojure-core-ns {:name 'with-redefs-fn}) - 'with-redefs (macrofy 'with-redefs sci-with-redefs) - 'zipmap (copy-core-var zipmap) - 'zero? (copy-core-var zero?) - - #?@(:cljs ['-write (copy-var -write clojure-core-ns)])}) + 'defmethod (macrofy 'defmethod sci.impl.multimethods/defmethod) + 'get-method (copy-core-var get-method) + 'methods (copy-core-var methods) + 'multi-fn-add-method-impl (copy-core-var sci.impl.multimethods/multi-fn-add-method-impl) + 'multi-fn?-impl (copy-core-var sci.impl.multimethods/multi-fn?-impl) + 'multi-fn-impl (copy-core-var sci.impl.multimethods/multi-fn-impl) + 'prefer-method (copy-core-var prefer-method) + 'prefers (copy-core-var prefers) + 'remove-method (copy-core-var remove-method) + 'remove-all-methods (copy-core-var remove-all-methods) + ;; end multimethods + ;; protocols + 'defprotocol (macrofy 'defprotocol sci.impl.protocols/defprotocol + clojure-core-ns true) + 'extend (copy-var sci.impl.protocols/extend clojure-core-ns {:name 'extend :ctx true}) + 'extends? (copy-core-var sci.impl.protocols/extends?) + 'extend-type (macrofy 'extend-type sci.impl.protocols/extend-type + clojure-core-ns true) + 'extend-protocol (macrofy 'extend-protocol sci.impl.protocols/extend-protocol + clojure-core-ns true) + '-reified-methods (new-var '-reified-methods #(types/getMethods %)) + 'reify* (new-var 'reify* reify/reify* clojure-core-ns true) + 'reify (macrofy 'reify reify/reify clojure-core-ns true) + 'protocol-type-impl (new-var 'protocol-type-impl types/type-impl) + #?@(:clj ['proxy* (new-var 'proxy* proxy/proxy* true) + 'proxy (macrofy 'proxy proxy/proxy clojure-core-ns true)]) + 'satisfies? (copy-var sci.impl.protocols/satisfies? clojure-core-ns {:name 'satisfies?}) + ;; end protocols + ;; IDeref as protocol + 'deref (copy-var core-protocols/deref* clojure-core-ns {:name 'deref}) + #?@(:cljs ['-deref (new-var '-deref core-protocols/-deref) + 'IDeref core-protocols/deref-protocol]) + ;; end IDeref as protocol + ;; IAtom / ISwap as protocol + 'swap! (copy-var core-protocols/swap!* clojure-core-ns {:name 'swap!}) + 'compare-and-set! #?(:clj (copy-var core-protocols/compare-and-set!* clojure-core-ns {:name 'compare-and-set!}) + :cljs (copy-core-var compare-and-set!)) + #?@(:cljs ['IReset core-protocols/reset-protocol + 'ISwap core-protocols/swap-protocol + '-swap! (new-var '-swap! core-protocols/-swap!) + '-reset! (new-var '-reset! core-protocols/-reset!)]) + ;; in CLJS swap-vals! and reset-vals! are going through the other protocols + #?@(:clj ['swap-vals! (copy-var core-protocols/swap-vals!* clojure-core-ns {:name 'swap-vals!}) + 'reset-vals! (copy-var core-protocols/reset-vals!* clojure-core-ns {:name 'reset-vals!})]) + + #?@(:cljs ['IRecord (utils/new-var 'IRecord {:protocol IRecord :ns clojure-core-ns} + {:ns clojure-core-ns})]) + ;; cljs data structures + #?@(:cljs ['Delay (copy-var Delay clojure-core-ns)]) + #?@(:cljs ['PersistentQueue (copy-var PersistentQueue clojure-core-ns)]) + #?@(:cljs ['LazySeq (copy-var LazySeq clojure-core-ns)]) + ;; end cljs data structures + ;; private + 'has-root-impl (copy-core-var has-root-impl) + ;; used in with-local-vars + '-new-dynamic-var (new-var '-new-dynamic-var #(sci.impl.utils/new-var (gensym) nil {:dynamic true})) + ;; used in let-fn + '-new-var (new-var '-new-var #(sci.impl.utils/new-var (gensym) nil)) + '-add-loaded-lib (copy-var -add-loaded-lib clojure-core-ns {:ctx true}) + ;; end private + '.. (macrofy '.. double-dot) + '= (copy-core-var =) + '< (copy-core-var <) + '<= (copy-core-var <=) + '> (copy-core-var >) + '>= (copy-core-var >=) + '+ (copy-core-var +) + '- (copy-core-var -) + '* (copy-core-var *) + '/ (copy-core-var /) + '== (copy-core-var ==) + '-> (macrofy '-> ->*) + '->> (macrofy '->> ->>*) + 'as-> (macrofy 'as-> as->*) + 'comment (macrofy 'comment comment*) + 'add-watch (copy-core-var add-watch) + 'remove-watch (copy-core-var remove-watch) + 'aclone (copy-core-var aclone) + 'aget (copy-core-var aget) + 'alias (copy-var sci-alias clojure-core-ns {:name 'alias :ctx true}) + 'all-ns (copy-var sci-all-ns clojure-core-ns {:name 'all-ns :ctx true}) + 'alter-meta! (copy-core-var alter-meta!) + 'alter-var-root (copy-core-var sci.impl.vars/alter-var-root) + 'amap (macrofy 'amap amap*) + 'ancestors (copy-var hierarchies/ancestors* clojure-core-ns {:name 'ancestors :ctx true}) + 'and (macrofy 'and and*) + #?@(:clj ['aset (copy-var aset* clojure-core-ns {:name 'aset})] + :default ['aset (copy-core-var aset)]) + #?@(:clj ['aset-boolean (copy-core-var aset-boolean) + 'aset-byte (copy-core-var aset-byte) + 'aset-char (copy-core-var aset-char) + 'aset-double (copy-core-var aset-double) + 'aset-float (copy-core-var aset-float) + 'aset-int (copy-core-var aset-int) + 'aset-long (copy-core-var aset-long) + 'aset-short (copy-core-var aset-short)]) + 'alength #?(:clj (copy-var alength clojure-core-ns {:inlined + (fn [arr] + (java.lang.reflect.Array/getLength arr))}) + :cljs (copy-core-var alength)) + 'any? (copy-core-var any?) + 'apply (copy-core-var apply) + 'areduce (macrofy 'areduce areduce*) + #?@(:cljs ['array? (copy-core-var array?)]) + #?@(:cljs ['array (copy-core-var array)]) + 'array-map (copy-core-var array-map) + '*assert* assert-var + 'assert (macrofy 'assert assert*) + 'assoc (copy-core-var assoc) + 'assoc! (copy-core-var assoc!) + 'assoc-in (copy-core-var assoc-in) + 'associative? (copy-core-var associative?) + 'atom (copy-core-var atom) + #?@(:clj ['bean (copy-core-var bean)]) + 'binding (macrofy 'binding sci-binding) + 'binding-conveyor-fn (copy-core-var sci.impl.vars/binding-conveyor-fn) + 'bit-and-not (copy-core-var bit-and-not) + #?@(:clj ['bit-clear (copy-core-var bit-clear)]) + 'bit-set (copy-core-var bit-set) + 'bit-shift-left (copy-core-var bit-shift-left) + 'bit-shift-right (copy-core-var bit-shift-right) + 'bit-xor (copy-core-var bit-xor) + 'bound? (copy-var sci-bound? clojure-core-ns {:name 'bound?}) + 'boolean (copy-core-var boolean) + 'boolean? (copy-core-var boolean?) + 'booleans (copy-core-var booleans) + 'butlast (copy-core-var butlast) + 'bytes (copy-core-var bytes) + 'bit-test (copy-core-var bit-test) + 'bit-and (copy-core-var bit-and) + 'bound-fn (macrofy 'bound-fn sci-bound-fn) + 'bound-fn* (copy-var bound-fn* clojure-core-ns) + 'bounded-count (copy-core-var bounded-count) + 'bit-or (copy-core-var bit-or) + 'bit-flip (copy-core-var bit-flip) + 'bit-not (copy-core-var bit-not) + 'byte (copy-core-var byte) + 'cat (copy-core-var cat) + 'case (macrofy 'case case**) + 'char (copy-core-var char) + 'char? (copy-core-var char?) + #?@(:clj ['class? (copy-core-var class?)]) + #?@(:cljs ['clj->js (copy-core-var clj->js)]) + 'cond (macrofy 'cond cond*) + 'cond-> (macrofy 'cond-> cond->*) + 'cond->> (macrofy 'cond->> cond->>*) + 'condp (macrofy 'condp condp*) + 'conj (copy-core-var conj) + 'conj! (copy-core-var conj!) + 'cons (copy-core-var cons) + 'contains? (copy-core-var contains?) + 'count (copy-core-var count) + 'cycle (copy-core-var cycle) + 'comp (copy-core-var comp) + 'concat (copy-core-var concat) + 'comparator (copy-core-var comparator) + 'coll? (copy-core-var coll?) + 'compare (copy-core-var compare) + 'complement (copy-core-var complement) + 'constantly (copy-core-var constantly) + 'chars (copy-core-var chars) + 'completing (copy-core-var completing) + 'counted? (copy-core-var counted?) + 'chunk (copy-core-var chunk) + 'chunk-append (copy-core-var chunk-append) + 'chunk-buffer (copy-core-var chunk-buffer) + 'chunk-cons (copy-core-var chunk-cons) + 'chunk-first (copy-core-var chunk-first) + 'chunk-rest (copy-core-var chunk-rest) + 'chunk-next (copy-core-var chunk-next) + 'chunked-seq? (copy-core-var chunked-seq?) + 'dec (copy-core-var dec) + 'declare (macrofy 'declare declare*) + 'dedupe (copy-core-var dedupe) + 'defmacro (macrofy 'defmacro fns/defmacro*) + 'defn (macrofy 'defn fns/defn*) + 'defn- (macrofy 'defn- defn-*) + 'defonce (macrofy 'defonce defonce*) + 'defrecord (macrofy 'defrecord sci.impl.records/defrecord + clojure-core-ns true) + 'deftype (macrofy 'deftype sci.impl.deftype/deftype + clojure-core-ns true) + 'delay (macrofy 'delay delay*) + 'delay? (copy-core-var delay?) + #?@(:clj ['deliver (copy-core-var deliver)]) + #?@(:cljs ['demunge (copy-core-var cljs.core/demunge)]) + 'derive (copy-var hierarchies/derive* clojure-core-ns {:name 'derive :ctx true}) + 'descendants (copy-var hierarchies/descendants* clojure-core-ns {:name 'descendants :ctx true}) + 'destructure (copy-var destructure/destructure clojure-core-ns) + 'dissoc (copy-core-var dissoc) + 'dissoc! (copy-core-var dissoc!) + 'distinct (copy-core-var distinct) + 'distinct? (copy-core-var distinct?) + 'disj (copy-core-var disj) + 'disj! (copy-core-var disj!) + 'doall (copy-core-var doall) + 'dorun (copy-core-var dorun) + 'doseq (macrofy 'doseq doseq-macro/expand-doseq) + 'dotimes (macrofy 'dotimes dotimes*) + 'doto (macrofy 'doto doto*) + 'double (copy-core-var double) + 'double-array (copy-core-var double-array) + 'double? (copy-core-var double?) + 'drop (copy-core-var drop) + 'drop-last (copy-core-var drop-last) + 'drop-while (copy-core-var drop-while) + 'doubles (copy-core-var doubles) + 'eduction (copy-core-var eduction) + '->Eduction (copy-core-var ->Eduction) + 'empty (copy-core-var empty) + 'empty? (copy-core-var empty?) + #?@(:clj ['enumeration-seq (copy-core-var enumeration-seq)]) + 'eval (copy-var eval clojure-core-ns {:copy-meta-from 'clojure.core/eval + :ctx true}) + 'even? (copy-core-var even?) + 'every? (copy-core-var every?) + 'every-pred (copy-core-var every-pred) + 'ensure-reduced (copy-core-var ensure-reduced) + 'ex-data (copy-core-var ex-data) + 'ex-info (copy-core-var ex-info) + 'ex-message (copy-core-var ex-message) + 'ex-cause (copy-core-var ex-cause) + #?@(:cljs ['exists? (copy-var exists? clojure-core-ns {:macro true + :ctx true + :name 'exists?})]) + 'find-ns (copy-var sci-find-ns clojure-core-ns {:ctx true :name 'find-ns}) + 'create-ns (copy-var sci-create-ns clojure-core-ns {:ctx true :name 'create-ns}) + 'in-ns (copy-var sci-in-ns clojure-core-ns {:ctx true :name 'in-ns}) + 'find-var (copy-var sci-find-var clojure-core-ns {:name 'find-var + :ctx true}) + 'first (copy-core-var first) + 'float? (copy-core-var float?) + 'floats (copy-core-var floats) + 'fn (macrofy 'fn fns/fn**) + 'fnil (copy-core-var fnil) + 'fnext (copy-core-var fnext) + 'ffirst (copy-core-var ffirst) + 'flatten (copy-core-var flatten) + 'false? (copy-core-var false?) + 'filter (copy-core-var filter) + 'filterv (copy-core-var filterv) + 'find (copy-core-var find) + 'frequencies (copy-core-var frequencies) + 'float (copy-core-var float) + 'fn? (copy-core-var fn?) + 'for (macrofy 'for for-macro/expand-for) + 'force (copy-core-var force) + 'get (copy-core-var get) + 'get-thread-binding-frame-impl (new-var 'get-thread-binding-frame-impl sci.impl.vars/get-thread-binding-frame) + #?@(:clj ['get-thread-bindings (copy-var sci.impl.vars/get-thread-bindings clojure-core-ns {:name 'get-thread-bindings})]) + 'get-in (copy-core-var get-in) + 'group-by (copy-core-var group-by) + 'gensym (copy-core-var gensym) + 'halt-when (copy-core-var halt-when) + 'hash (copy-core-var hash) + 'hash-combine (copy-core-var hash-combine) + 'hash-map (copy-core-var hash-map) + 'hash-set (copy-core-var hash-set) + 'hash-ordered-coll (copy-core-var hash-ordered-coll) + 'hash-unordered-coll (copy-core-var hash-unordered-coll) + 'ident? (copy-core-var ident?) + 'identical? (copy-core-var identical?) + 'identity (copy-core-var identity) + 'if-let (macrofy 'if-let if-let*) + 'if-some (macrofy 'if-some if-some*) + 'if-not (macrofy 'if-not if-not*) + 'ifn? (copy-core-var ifn?) + 'inc (copy-core-var inc) + 'inst? (copy-core-var inst?) + 'inst-ms (copy-core-var inst-ms) + 'instance? (copy-var protocols/instance-impl clojure-core-ns {:name 'instance?}) + 'int-array (copy-core-var int-array) + 'interleave (copy-core-var interleave) + 'intern (copy-var sci-intern clojure-core-ns {:name 'intern :ctx true}) + 'into (copy-core-var into) + 'iterate (copy-core-var iterate) + #?@(:clj ['iterator-seq (copy-core-var iterator-seq)]) + 'int (copy-core-var int) + 'int? (copy-core-var int?) + 'interpose (copy-core-var interpose) + 'indexed? (copy-core-var indexed?) + 'integer? (copy-core-var integer?) + 'ints (copy-core-var ints) + 'into-array (copy-core-var into-array) + 'isa? (copy-var hierarchies/isa?* clojure-core-ns {:ctx true + :name 'isa?}) + #?@(:cljs ['js->clj (copy-core-var js->clj)]) + #?@(:cljs ['js-obj (copy-core-var js-obj)]) + #?@(:cljs ['js-keys (copy-core-var js-keys)]) + #?@(:cljs ['js-delete (copy-core-var js-delete)]) + 'juxt (copy-core-var juxt) + 'keep (copy-core-var keep) + 'keep-indexed (copy-core-var keep-indexed) + 'key (copy-core-var key) + 'keys (copy-core-var keys) + 'keyword (copy-core-var keyword) + 'keyword? (copy-core-var keyword?) + #?@(:cljs ['keyword-identical? (copy-core-var keyword-identical?)]) + 'last (copy-core-var last) + 'lazy-seq (macrofy 'lazy-seq lazy-seq*) + 'lazy-cat (macrofy 'lazy-cat lazy-cat*) + 'let (macrofy 'let let**) + 'letfn (macrofy 'letfn letfn*) + 'load-string (copy-var load-string clojure-core-ns {:copy-meta-from 'clojure.core/load-string :ctx true}) + 'loaded-libs (copy-var loaded-libs* clojure-core-ns {:name 'loaded-libs :ctx true}) + 'loop (macrofy 'loop loop**) + 'long (copy-core-var long) + 'list (copy-core-var list) + 'list? (copy-core-var list?) + 'longs (copy-core-var longs) + 'list* (copy-core-var list*) + 'long-array (copy-core-var long-array) + 'macroexpand (copy-var macroexpand* clojure-core-ns {:name 'macroexpand + :ctx true}) + 'macroexpand-1 (copy-var macroexpand-1* clojure-core-ns {:name 'macroexpand-1 + :ctx true}) + 'make-array (copy-core-var make-array) + 'make-hierarchy (copy-core-var make-hierarchy) + 'map (copy-core-var map) + 'map? (copy-core-var map?) + 'map-indexed (copy-core-var map-indexed) + 'map-entry? (copy-core-var map-entry?) + 'mapv (copy-core-var mapv) + 'mapcat (copy-core-var mapcat) + 'max (copy-core-var max) + 'max-key (copy-core-var max-key) + 'meta (copy-core-var meta) + 'memfn (copy-var memfn clojure-core-ns {:macro true}) + 'memoize (copy-core-var memoize) + 'merge (copy-core-var merge) + 'merge-with (copy-core-var merge-with) + 'min (copy-core-var min) + 'min-key (copy-core-var min-key) + 'munge (copy-core-var munge) + 'mod (copy-core-var mod) + 'name (copy-core-var name) + 'namespace (copy-core-var namespace) + 'nfirst (copy-core-var nfirst) + 'not (copy-core-var not) + 'not= (copy-core-var not=) + 'not-every? (copy-core-var not-every?) + 'neg? (copy-core-var neg?) + 'neg-int? (copy-core-var neg-int?) + 'nth (copy-core-var nth) + 'nthnext (copy-core-var nthnext) + 'nthrest (copy-core-var nthrest) + 'nil? (copy-core-var nil?) + 'nat-int? (copy-core-var nat-int?) + 'ns (macrofy 'ns ns*) + 'ns-resolve (copy-var sci-ns-resolve clojure-core-ns {:ctx true :name 'ns-resolve}) + 'number? (copy-core-var number?) + 'not-empty (copy-core-var not-empty) + 'not-any? (copy-core-var not-any?) + 'next (copy-core-var next) + 'nnext (copy-core-var nnext) + 'ns-aliases (copy-var sci-ns-aliases clojure-core-ns {:ctx true :name 'ns-aliases}) + 'ns-imports (copy-var sci-ns-imports clojure-core-ns {:ctx true :name 'ns-imports}) + 'ns-interns (copy-var sci-ns-interns clojure-core-ns {:ctx true :name 'ns-interns}) + 'ns-publics (copy-var sci-ns-publics clojure-core-ns {:ctx true :name 'ns-publics}) + 'ns-refers (copy-var sci-ns-refers clojure-core-ns {:ctx true :name 'ns-refers}) + 'ns-map (copy-var sci-ns-map clojure-core-ns {:name 'ns-map :ctx true}) + 'ns-unmap (copy-var sci-ns-unmap clojure-core-ns {:ctx true :name 'ns-unmap}) + 'ns-unalias (copy-var sci-ns-unalias clojure-core-ns {:ctx true :name 'ns-unalias}) + 'ns-name (copy-var sci-ns-name clojure-core-ns {:name 'ns-name}) + 'odd? (copy-core-var odd?) + #?@(:cljs ['object? (copy-core-var object?)]) + 'object-array (copy-core-var object-array) + 'or (macrofy 'or or*) + 'parents (copy-var hierarchies/parents* clojure-core-ns {:name 'parents :ctx true}) + 'peek (copy-core-var peek) + 'pop (copy-core-var pop) + 'pop! (copy-core-var pop!) + 'pop-thread-bindings (copy-core-var sci.impl.vars/pop-thread-bindings) + 'pos? (copy-core-var pos?) + 'pos-int? (copy-core-var pos-int?) + 'partial (copy-core-var partial) + 'partition (copy-core-var partition) + 'partition-all (copy-core-var partition-all) + 'partition-by (copy-core-var partition-by) + 'persistent! (copy-core-var persistent!) + #?@(:clj ['promise (copy-core-var promise)]) + 'push-thread-bindings (copy-var sci.impl.vars/push-thread-bindings clojure-core-ns {:name 'push-thread-bindings}) + 'qualified-ident? (copy-core-var qualified-ident?) + 'qualified-symbol? (copy-core-var qualified-symbol?) + 'qualified-keyword? (copy-core-var qualified-keyword?) + 'quot (copy-core-var quot) + #?@(:cljs ['random-uuid (copy-core-var random-uuid)]) + 're-seq (copy-core-var re-seq) + 'refer (copy-var sci-refer clojure-core-ns {:name 'refer :ctx true}) + 'refer-clojure (macrofy 'refer-clojure sci-refer-clojure) + 're-find (copy-core-var re-find) + #?@(:clj ['re-groups (copy-core-var re-groups)]) + 're-pattern (copy-core-var re-pattern) + #?@(:clj ['re-matcher (copy-core-var re-matcher)]) + 're-matches (copy-core-var re-matches) + 'realized? (copy-core-var realized?) + 'rem (copy-core-var rem) + 'remove (copy-core-var remove) + 'remove-ns (copy-var sci-remove-ns clojure-core-ns {:ctx true :name 'remove-ns}) + 'require (copy-var require clojure-core-ns {:ctx true :copy-meta-from 'clojure.core/require}) + 'reset-meta! (copy-core-var reset-meta!) + 'rest (copy-core-var rest) + 'repeatedly (copy-core-var repeatedly) + 'reverse (copy-core-var reverse) + 'rand-int (copy-core-var rand-int) + 'rand-nth (copy-core-var rand-nth) + 'range (copy-core-var range) + 'record? (copy-core-var record?) + 'reduce (copy-core-var reduce) + 'reduce-kv (copy-core-var reduce-kv) + 'reduced (copy-core-var reduced) + 'reduced? (copy-core-var reduced?) + 'reset! (copy-var core-protocols/reset!* clojure-core-ns {:name 'reset!}) + 'reset-thread-binding-frame-impl (new-var 'reset-thread-binding-frame-impl sci.impl.vars/reset-thread-binding-frame) + 'resolve (copy-var sci-resolve clojure-core-ns {:name 'resolve :ctx true}) + 'reversible? (copy-core-var reversible?) + 'rsubseq (copy-core-var rsubseq) + 'reductions (copy-core-var reductions) + 'rand (copy-core-var rand) + 'replace (copy-core-var replace) + 'rseq (copy-core-var rseq) + 'random-sample (copy-core-var random-sample) + 'repeat (copy-core-var repeat) + 'requiring-resolve (copy-var sci-requiring-resolve clojure-core-ns {:ctx true :name 'requiring-resolve}) + 'run! (copy-core-var run!) + 'set? (copy-core-var set?) + 'sequential? (copy-core-var sequential?) + 'select-keys (copy-core-var select-keys) + #?@(:clj ['short-array (copy-core-var short-array)]) + 'simple-keyword? (copy-core-var simple-keyword?) + 'simple-symbol? (copy-core-var simple-symbol?) + 'some? (copy-core-var some?) + 'some-> (macrofy 'some-> some->*) + 'some->> (macrofy 'some->> some->>*) + 'string? (copy-core-var string?) + 'str (copy-core-var str) + 'second (copy-core-var second) + 'set (copy-core-var set) + 'seq (copy-core-var seq) + 'seq-to-map-for-destructuring (copy-var seq-to-map-for-destructuring clojure-core-ns) + 'seq? (copy-core-var seq?) + 'short (copy-core-var short) + 'shuffle (copy-core-var shuffle) + 'sort (copy-core-var sort) + 'sort-by (copy-core-var sort-by) + ;; #?@(:cljs ['-js-this -js-this + ;; 'this-as (macrofy 'this-as this-as clojure-core-ns)]) + 'test (copy-core-var test) + 'thread-bound? (copy-var sci-thread-bound? clojure-core-ns {:name 'thread-bound?}) + 'time (copy-var time clojure-core-ns {:macro true}) + 'subs (copy-core-var subs) + #?@(:clj ['supers (copy-core-var supers)]) + 'symbol (copy-var symbol* clojure-core-ns {:name 'symbol}) + 'symbol? (copy-core-var symbol?) + 'system-time (copy-var #?(:clj system-time + :cljs system-time) clojure-core-ns) + 'special-symbol? (copy-core-var special-symbol?) + 'subvec (copy-core-var subvec) + 'some-fn (copy-core-var some-fn) + 'some (copy-core-var some) + 'split-at (copy-core-var split-at) + 'split-with (copy-core-var split-with) + 'sorted-set (copy-core-var sorted-set) + 'subseq (copy-core-var subseq) + 'sorted-set-by (copy-core-var sorted-set-by) + 'sorted-map-by (copy-core-var sorted-map-by) + 'sorted-map (copy-core-var sorted-map) + 'sorted? (copy-core-var sorted?) + 'simple-ident? (copy-core-var simple-ident?) + 'sequence (copy-core-var sequence) + 'seqable? (copy-core-var seqable?) + 'shorts (copy-core-var shorts) + 'tagged-literal (copy-core-var tagged-literal) + 'tagged-literal? (copy-core-var tagged-literal?) + 'take (copy-core-var take) + 'take-last (copy-core-var take-last) + 'take-nth (copy-core-var take-nth) + 'take-while (copy-core-var take-while) + 'the-ns (copy-var sci-the-ns clojure-core-ns {:name 'the-ns :ctx true}) + 'trampoline (copy-core-var trampoline) + 'transduce (copy-core-var transduce) + 'transient (copy-core-var transient) + 'tree-seq (copy-core-var tree-seq) + 'type (copy-var sci.impl.types/type-impl2 clojure-core-ns {:name 'type}) + 'true? (copy-core-var true?) + 'to-array (copy-core-var to-array) + 'to-array-2d (copy-core-var to-array-2d) + 'update (copy-core-var update) + 'update-in (copy-core-var update-in) + 'uri? (copy-core-var uri?) + 'uuid? (copy-core-var uuid?) + 'unchecked-dec (copy-core-var unchecked-dec) + 'unchecked-inc-int (copy-core-var unchecked-inc-int) + 'unchecked-long (copy-core-var unchecked-long) + 'unchecked-negate (copy-core-var unchecked-negate) + 'unchecked-remainder-int (copy-core-var unchecked-remainder-int) + 'unchecked-subtract-int (copy-core-var unchecked-subtract-int) + 'unsigned-bit-shift-right (copy-core-var unsigned-bit-shift-right) + 'unchecked-float (copy-core-var unchecked-float) + 'unchecked-add-int (copy-core-var unchecked-add-int) + 'unchecked-double (copy-core-var unchecked-double) + 'unchecked-multiply-int (copy-core-var unchecked-multiply-int) + 'unchecked-int (copy-core-var unchecked-int) + 'unchecked-multiply (copy-core-var unchecked-multiply) + 'unchecked-dec-int (copy-core-var unchecked-dec-int) + 'unchecked-add (copy-core-var unchecked-add) + 'unreduced (copy-core-var unreduced) + 'unchecked-divide-int (copy-core-var unchecked-divide-int) + 'unchecked-subtract (copy-core-var unchecked-subtract) + 'unchecked-negate-int (copy-core-var unchecked-negate-int) + 'unchecked-inc (copy-core-var unchecked-inc) + 'unchecked-char (copy-core-var unchecked-char) + 'unchecked-byte (copy-core-var unchecked-byte) + 'unchecked-short (copy-core-var unchecked-short) + #?@(:cljs ['undefined? (copy-core-var undefined?)]) + 'underive (copy-var hierarchies/underive* clojure-core-ns {:name 'underive :ctx true}) + 'unquote (doto (sci.impl.utils/new-var 'unquote nil {:ns clojure-core-ns}) + (sci.impl.vars/unbind)) + 'use (copy-var use clojure-core-ns {:ctx true :copy-meta-from 'clojure.core/use}) + 'val (copy-core-var val) + 'vals (copy-core-var vals) + 'var? (copy-var sci.impl.utils/var? clojure-core-ns {:name 'var?}) + 'var-get (copy-var sci.impl.vars/var-get clojure-core-ns {:name 'var-get}) + 'var-set (copy-var sci.impl.vars/var-set clojure-core-ns {:name 'var-set}) + 'vary-meta (copy-core-var vary-meta) + 'vec (copy-core-var vec) + 'vector (copy-core-var vector) + 'vector? (copy-core-var vector?) + 'volatile! (copy-core-var volatile!) + 'volatile? (copy-core-var volatile?) + 'vreset! (copy-core-var vreset!) + 'vswap! (macrofy 'vswap! vswap!) + 'when-first (macrofy 'when-first when-first*) + 'when-let (macrofy 'when-let when-let*) + 'when-some (macrofy 'when-some when-some*) + 'when (macrofy 'when when*) + 'when-not (macrofy 'when-not when-not*) + 'while (macrofy 'while while*) + 'with-bindings (macrofy 'with-bindings sci-with-bindings) + 'with-bindings* (copy-var with-bindings* clojure-core-ns) + 'with-local-vars (macrofy 'with-local-vars with-local-vars*) + 'with-meta (copy-core-var with-meta) + 'with-open (macrofy 'with-open with-open*) + 'with-redefs-fn (copy-var sci-with-redefs-fn clojure-core-ns {:name 'with-redefs-fn}) + 'with-redefs (macrofy 'with-redefs sci-with-redefs) + 'zipmap (copy-core-var zipmap) + 'zero? (copy-core-var zero?) + + #?@(:cljs ['-write (copy-var -write clojure-core-ns)]) + 'locking (macrofy 'locking locking*) + '-locking-impl (copy-var -locking-impl clojure-core-ns) + #?@(:clj ['+' (copy-core-var +') + '-' (copy-core-var -') + '*' (copy-core-var *') + 'boolean-array (copy-core-var boolean-array) + 'byte-array (copy-core-var byte-array) + 'bigint (copy-core-var bigint) + 'bytes? (copy-core-var bytes?) + 'biginteger (copy-core-var biginteger) + 'bigdec (copy-core-var bigdec) + 'char-array (copy-core-var char-array) + 'char-escape-string (copy-core-var char-escape-string) + 'char-name-string (copy-core-var char-name-string) + 'class (copy-core-var class) + 'dec' (copy-core-var dec') + 'decimal? (copy-core-var decimal?) + 'denominator (copy-core-var denominator) + 'format (copy-core-var format) + 'float-array (copy-core-var float-array) + 'inc' (copy-core-var inc') + 'line-seq (copy-core-var line-seq) + 'num (copy-core-var num) + 'namespace-munge (copy-core-var namespace-munge) + 'numerator (copy-core-var numerator) + 'replicate (copy-core-var replicate) + 'rational? (copy-core-var rational?) + 'ratio? (copy-core-var ratio?) + 'rationalize (copy-core-var rationalize) + 'seque (copy-core-var seque) + 'xml-seq (copy-core-var xml-seq)])})) (defn dir-fn [ctx ns] @@ -1936,37 +1968,7 @@ ) (macros/usetime - (def clojure-core @(delay (merge clojure-core* {'locking (macrofy 'locking locking*) - '-locking-impl (copy-var -locking-impl clojure-core-ns) - #?@(:clj ['+' (copy-core-var +') - '-' (copy-core-var -') - '*' (copy-core-var *') - 'boolean-array (copy-core-var boolean-array) - 'byte-array (copy-core-var byte-array) - 'bigint (copy-core-var bigint) - 'bytes? (copy-core-var bytes?) - 'biginteger (copy-core-var biginteger) - 'bigdec (copy-core-var bigdec) - 'char-array (copy-core-var char-array) - 'char-escape-string (copy-core-var char-escape-string) - 'char-name-string (copy-core-var char-name-string) - 'class (copy-core-var class) - 'dec' (copy-core-var dec') - 'decimal? (copy-core-var decimal?) - 'denominator (copy-core-var denominator) - 'format (copy-core-var format) - 'float-array (copy-core-var float-array) - 'inc' (copy-core-var inc') - 'line-seq (copy-core-var line-seq) - 'num (copy-core-var num) - 'namespace-munge (copy-core-var namespace-munge) - 'numerator (copy-core-var numerator) - 'replicate (copy-core-var replicate) - 'rational? (copy-core-var rational?) - 'ratio? (copy-core-var ratio?) - 'rationalize (copy-core-var rationalize) - 'seque (copy-core-var seque) - 'xml-seq (copy-core-var xml-seq)])}))) + ;; #_#?(:clj (alter-var-root #'clojure-core assoc ;; 'locking (macrofy 'locking locking*) ;; '-locking-impl (copy-var -locking-impl clojure-core-ns))