Skip to content
HARA
>_

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