Skip to content
Christophe Grand edited this page Dec 12, 2017 · 1 revision

Cljs eval, captures some dynamic vars then delegates to eval* which delegates to ns-side-effects which calls load-deps which calls require which calls eval-str*.

This chain leads to some conclusions:

  • a custom (async) reader would not be used for loading deps (not unlike clj but worth keeping in mind),
  • the value proposition of a custom reader is diminished
  • no custom reader implies no new dyn vars
  • so buffer until enough to read is going to stay for now.

Another conclusion is that since eval is async, we need a way to prevent the REPL from looping if we want to upgrade. In Clojure this is done by not returning from eval. What would the equivalent be for CLJS?

  • Returns a special value (promise like)
  • Manually acquire/release stdin?