I started using Flow Storm Debugger to explore. When I input Code at the repl that includes Datoms it blows, because cljs.storm walks the Code, calls empty on the Datom and causes UnsupportedOperationException: empty is not supported on Datom.
UnsupportedOperationException: empty is not supported on Datom
datascript.db.Datom (db.cljc:184)
clojure.core/empty (core.clj:5300)
clojure.core/empty (core.clj:5294)
cljs.storm.utils/walk-code-form (utils.cljc:90)
cljs.storm.utils/walk-code-form (utils.cljc:55)
cljs.storm.utils/walk-code-form/walk-sequential--896/fn--897 (utils.cljc:70)
clojure.core/map-indexed/mapi--8680/fn--8681 (core.clj:7500)
clojure.lang.LazySeq.force (LazySeq.java:50)
clojure.lang.LazySeq.realize (LazySeq.java:89)
clojure.lang.LazySeq.seq (LazySeq.java:106)
clojure.lang.RT.seq (RT.java:555)
clojure.core/seq--5486 (core.clj:139)
clojure.core.protocols/seq-reduce (protocols.clj:24)
clojure.core.protocols/fn--8262 (protocols.clj:74)
clojure.core.protocols/fn--8262 (protocols.clj:74)
clojure.core.protocols/fn--8203/G--8198--8216 (protocols.clj:13)
clojure.core/reduce (core.clj:6965)
clojure.core/into (core.clj:7038)
clojure.core/into (core.clj:7029)
cljs.storm.utils/walk-code-form (utils.cljc:90)
cljs.storm.utils/walk-code-form (utils.cljc:55)
cljs.storm.utils/walk-code-form/walk-sequential--896/fn--897 (utils.cljc:70)
clojure.core/map-indexed/mapi--8680/fn--8681 (core.clj:7502)
clojure.lang.LazySeq.force (LazySeq.java:50)
clojure.lang.LazySeq.realize (LazySeq.java:89)
clojure.lang.LazySeq.seq (LazySeq.java:106)
clojure.lang.Cons.next (Cons.java:41)
clojure.lang.RT.boundedLength (RT.java:1810)
clojure.core/apply (core.clj:667)
clojure.core/apply (core.clj:662)
cljs.storm.utils/walk-code-form (utils.cljc:88)
cljs.storm.utils/walk-code-form (utils.cljc:55)
cljs.storm.utils/walk-code-form (utils.cljc:65)
cljs.storm.utils/walk-code-form (utils.cljc:55)
cljs.storm.utils/tag-form-recursively (utils.cljc:98)
cljs.storm.utils/tag-form-recursively (utils.cljc:95)
cljs.analyzer/analyze* (analyzer.cljc:4413)
cljs.analyzer/analyze* (analyzer.cljc:4409)
shadow.build.compiler/analyze/fn--84000 (compiler.clj:392)
shadow.build.compiler/analyze (compiler.clj:380)
shadow.build.compiler/analyze (compiler.clj:332)
shadow.cljs.repl/repl-compile/fn--85944/fn--85945 (repl.clj:516)
shadow.cljs.repl/repl-compile/fn--85944 (repl.clj:489)
shadow.cljs.repl/repl-compile (repl.clj:487)
shadow.cljs.repl/repl-compile (repl.clj:484)
shadow.cljs.repl/process-read-result (repl.clj:575)
shadow.cljs.repl/process-read-result (repl.clj:551)
shadow.cljs.repl/process-input (repl.clj:712)
shadow.cljs.repl/process-input (repl.clj:690)
shadow.cljs.devtools.server.worker.impl/eval86525/fn--86528 (impl.clj:698)
clojure.lang.MultiFn.invoke (MultiFn.java:234)
shadow.cljs.devtools.server.util/server-thread/fn--86160/fn--86161/fn--86169 (util.clj:283)
shadow.cljs.devtools.server.util/server-thread/fn--86160/fn--86161 (util.clj:282)
shadow.cljs.devtools.server.util/server-thread/fn--86160 (util.clj:255)
java.lang.Thread.run (Thread.java:1583)
Datalevin had a similar issue because of Cursive walking Code and solved it thus:
https://github.com/juji-io/datalevin/commit/c2aed7489139c6965c0d6f7ed8a0dca802edecdc
I do not understand the change in seq-datom (yet).This happens when I eval #datascript/Datom [1 :hates "Cheese" 536870914 false] it does not happen when I eval (datom 1 :hates "Cheese" 536870914 false) so it is a cosmetic thing only.