Clojure core / Hara core compatibility¶
Canonical exhaustive grouping for Clojure 1.12.5 and Hara L0 plus std.lib.foundation.
| Group | Count |
|---|---|
only-clojure |
536 |
only-hara |
87 |
same-exact |
144 |
same-renamed |
1 |
same-changed |
12 |
same-changed¶
| Clojure | Hara | Contract |
|---|---|---|
map |
map |
Direct calls are lazy in both; Hara's one-argument transform is eager on ordinary collections and returns a vector, while preserving arrays and existing lazy sources. |
seq |
seq |
Hara exposes the iterator boundary explicitly and also supports applying a transform lazily as (seq transform source); it does not require Clojure ISeq. |
rest |
rest |
Hara returns nil when no values remain; Clojure rest returns an empty sequence. |
partition |
partition |
Hara direct calls are lazy, while its one-argument transform is eager and returns a vector (or array for array input); Clojure's one-argument form is a transducer. |
partition-all |
partition-all |
Hara's one-argument form is an eager transform rather than a Clojure transducer. |
keys |
keys |
Hara returns its runtime-neutral lazy Seq rather than Clojure's JVM sequence implementation. |
vals |
vals |
Hara returns its runtime-neutral lazy Seq rather than Clojure's JVM sequence implementation. |
some |
any? |
Hara any? returns a boolean existential result; Clojure some returns the first truthy predicate result. |
empty? |
empty? |
Hara checks through the iterator protocol and may inspect a one-shot iterator; Clojure uses seq semantics. |
let |
let |
Hara evaluates initializers against the enclosing lexical environment in parallel; Clojure let bindings are sequential. |
defstruct |
defstruct |
Hara has no Clojure JVM record/class contract; portable immutable domain values use defstruct and protocols. |
eval |
eval |
Hara evaluates through its context-local language runtime and does not expose Clojure compiler/JVM eval semantics. |
same-renamed¶
| Clojure | Hara | Contract |
|---|---|---|
contains? |
IFind/has? |
Protocol membership uses the Hara IFind/has? protocol method. |
only-clojure¶
*', *1, *2, *3, *agent*, *allow-unresolved-vars*, *assert*, *clojure-version*, *command-line-args*, *compile-files*, *compile-path*, *compiler-options*, *data-readers*, *default-data-reader-fn*, *e, *err*, *file*, *flush-on-newline*, *fn-loader*, *in*, *math-context*, *ns*, *out*, *print-dup*, *print-length*, *print-level*, *print-meta*, *print-namespace-maps*, *print-readably*, *read-eval*, *reader-resolver*, *repl*, *source-path*, *suppress-read*, *unchecked-math*, *use-context-classloader*, *verbose-defrecords*, *warn-on-reflection*, +', -', ->, ->>, ->ArrayChunk, ->Eduction, ->Vec, ->VecNode, ->VecSeq, -cache-protocol-fn, -reset-methods, .., ==, EMPTY-NODE, Inst, NaN?, PrintWriter-on, StackTraceElement->vec, Throwable->map, abs, accessor, aclone, add-classpath, add-tap, add-watch, agent, agent-error, agent-errors, aget, alength, alias, all-ns, alter, alter-meta!, amap, ancestors, and, any?, areduce, array-map, as->, aset, aset-boolean, aset-byte, aset-char, aset-double, aset-float, aset-int, aset-long, aset-short, assert, assoc!, associative?, await, await-for, await1, bases, bean, biginteger, bit-and-not, bit-clear, bit-flip, bit-set, bit-test, boolean, boolean-array, boolean?, booleans, bound-fn, bound-fn*, bound?, bounded-count, butlast, byte, byte-array, bytes?, case, cast, cat, char, char-array, char-escape-string, char-name-string, chars, chunk, chunk-append, chunk-buffer, chunk-cons, chunk-first, chunk-next, chunk-rest, chunked-seq?, class, class?, clear-agent-errors, clojure-version, coll?, comment, commute, comparator, compare, compare-and-set!, compile, completing, cond, cond->, cond->>, condp, conj!, construct-proxy, counted?, create-ns, create-struct, dec', decimal?, declare, dedupe, default-data-readers, definline, definterface, defn-, defonce, deftype, delay, delay?, deliver, denominator, deref, derive, descendants, destructure, disj, disj!, dissoc!, distinct, distinct?, doall, dorun, doseq, dosync, dotimes, doto, double-array, double?, doubles, drop-last, eduction, ensure, ensure-reduced, enumeration-seq, error-handler, error-mode, every-pred, ex-cause, extend, extend-protocol, extenders, extends?, ffirst, file-seq, filterv, find, find-keyword, find-ns, find-protocol-impl, find-protocol-method, find-var, flatten, float, float-array, float?, floats, flush, fn?, fnext, fnil, for, force, format, frequencies, future, future-call, future-cancel, future-cancelled?, future-done?, future?, gen-class, gen-interface, gensym, get-method, get-proxy-class, get-thread-bindings, get-validator, group-by, halt-when, hash, hash-combine, hash-map, hash-ordered-coll, hash-set, hash-unordered-coll, ident?, identical?, if-let, if-not, if-some, ifn?, import, inc', indexed?, infinite?, init-proxy, inst-ms, inst-ms*, inst?, instance?, int, int-array, int?, integer?, intern, into, into-array, ints, io!, isa?, iteration, iterator-seq, keep-indexed, lazy-cat, lazy-seq, letfn, line-seq, list*, load, load-reader, loaded-libs, locking, long, long-array, longs, macroexpand, macroexpand-1, make-array, make-hierarchy, map-indexed, max, max-key, memfn, memoize, merge-with, method-sig, methods, min, min-key, mix-collection-hash, monitor-enter, monitor-exit, munge, namespace-munge, nat-int?, neg-int?, new, newline, next, nfirst, nnext, not-any?, not-every?, ns-imports, ns-interns, ns-map, ns-refers, ns-resolve, ns-unalias, ns-unmap, nthnext, nthrest, num, numerator, object-array, or, parents, parse-boolean, parse-double, parse-long, parse-uuid, partial, partition-by, partitionv, partitionv-all, pcalls, persistent!, pmap, pop!, pop-thread-bindings, pos-int?, pr, prefer-method, prefers, primitives-classnames, print, print-ctor, print-dup, print-method, print-simple, print-str, printf, println, println-str, prn, prn-str, proxy, proxy-call-with-super, proxy-mappings, proxy-name, proxy-super, push-thread-bindings, pvalues, qualified-ident?, qualified-keyword?, qualified-symbol?, quot, rand, rand-int, rand-nth, random-sample, random-uuid, ratio?, rational?, rationalize, re-find, re-groups, re-matcher, re-matches, re-pattern, re-seq, read, read+string, read-line, read-string, reader-conditional, reader-conditional?, realized?, record?, reduced, reduced?, reductions, ref, ref-history-count, ref-max-history, ref-min-history, ref-set, refer-clojure, reify, release-pending-sends, rem, remove-all-methods, remove-method, remove-ns, remove-tap, remove-watch, replace, replicate, reset-meta!, reset-vals!, restart-agent, resultset-seq, reversible?, rseq, rsubseq, run!, satisfies?, send, send-off, send-via, seq-to-map-for-destructuring, seqable?, seque, sequence, sequential?, set, set!, set-agent-send-executor!, set-agent-send-off-executor!, set-error-handler!, set-error-mode!, set-validator!, short, short-array, shorts, shuffle, shutdown-agents, simple-ident?, simple-keyword?, simple-symbol?, slurp, some->, some->>, some-fn, some?, sort, sort-by, sorted-map, sorted-map-by, sorted-set, sorted-set-by, sorted?, spit, split-at, split-with, splitv-at, stream-into!, stream-reduce!, stream-seq!, stream-transduce!, struct, struct-map, subs, subseq, subvec, supers, swap!, swap-vals!, sync, tagged-literal, tagged-literal?, take-last, take-nth, tap>, test, thread-bound?, time, to-array, to-array-2d, trampoline, transduce, transient, tree-seq, type, unchecked-add, unchecked-add-int, unchecked-byte, unchecked-char, unchecked-dec, unchecked-dec-int, unchecked-divide-int, unchecked-double, unchecked-float, unchecked-inc, unchecked-inc-int, unchecked-int, unchecked-long, unchecked-multiply, unchecked-multiply-int, unchecked-negate, unchecked-negate-int, unchecked-remainder-int, unchecked-short, unchecked-subtract, unchecked-subtract-int, underive, unquote, unquote-splicing, unreduced, unsigned-bit-shift-right, update-keys, update-proxy, update-vals, uri?, var-get, var-set, var?, vary-meta, vector, vector-of, volatile!, volatile?, vreset!, vswap!, when, when-first, when-let, when-not, when-some, while, with-bindings, with-bindings*, with-in-str, with-loading-context, with-local-vars, with-open, with-out-str, with-precision, with-redefs, with-redefs-fn, xml-seq, zipmap
only-hara¶
IApplicable, IAssoc, IColl, IComponent, IComponentOptions, IComponentProps, IComponentQuery, IComponentTrack, IConj, ICons, IContext, ICount, IDeref, IDerefTimeout, IDisplay, IDissoc, IEmpty, IEquality, IExInfo, IFind, IFn, IHasRuntime, IHash, IIndexed, IIndexedKV, IInvokeIn, ILookup, IMetadata, INamespaced, INavigation, INth, IObjType, IPair, IPointer, IRealize, IReset, ISpace, IToMutable, IToPersistent, IValidate, IWatch, array, array?, comp2, comp3, current-namespace, current-symbols, defproject, ex-class, iter, iter-any?, iter-close, iter-constantly, iter-cycle, iter-drop, iter-drop-while, iter-every?, iter-filter, iter-has?, iter-interleave, iter-interpose, iter-iterate, iter-keep, iter-map, iter-mapcat, iter-next, iter-partition, iter-partition-all, iter-partition-pair, iter-range, iter-repeatedly, iter-take, iter-take-while, iter-zip, iter?, load-resource, map-transform, module-dependencies, module-revision, object, partition-all-transform, partition-pair, partition-transform, read-forms, regexp?, var-sym, zip
same-exact¶
*, +, -, /, <, <=, =, >, >=, alter-var-root, apply, assoc, assoc-in, atom, bigdec, bigint, binding, bit-and, bit-not, bit-or, bit-shift-left, bit-shift-right, bit-xor, bytes, catch, char?, comp, complement, concat, conj, cons, constantly, count, cycle, dec, def, defmacro, defmethod, defmulti, defn, defprotocol, defstruct, dissoc, do, double, drop, drop-while, empty, even?, every?, ex-data, ex-info, ex-message, extend-type, false?, filter, finally, first, fn, get, get-in, identity, if, in-ns, inc, interleave, interpose, iterate, juxt, keep, key, keyword, keyword?, last, list, list?, load-file, load-string, loop, map-entry?, map?, mapcat, mapv, merge, meta, mod, name, namespace, neg?, nil?, not, not-empty, not=, ns, ns-aliases, ns-name, ns-publics, nth, number?, odd?, peek, pop, pos?, pr-str, promise, quote, range, recur, reduce, reduce-kv, refer, remove, repeat, repeatedly, require, requiring-resolve, reset!, resolve, reverse, second, select-keys, seq?, set?, special-symbol?, str, string?, symbol, symbol?, take, take-while, the-ns, throw, true?, try, update, update-in, use, uuid?, val, var, vec, vector?, with-meta, zero?
Runtime drift¶
| Runtime | Missing canonical | Extra implementation |
|---|---|---|
| truffle | 0 | 0 |
| rust-native | 164 | 2 |
| wasm | 164 | 2 |