Reveal: Read Eval Visualize Loop for Clojure
Rationale
Repl is a great window into a running program, but the textual nature of its output limits developer's ability to inspect the program: a text is not an object, and we are dealing with objects in the VM.
Reveal aims to solve this problem by creating an in-process repl output pane that makes inspecting values as easy as selecting an interesting datum. It recognizes the value of text as a universal interface, that's why its output looks like a text: you can select it, copy it, save it into a file. Unlike text, reveal output holds references to printed values, making inspecting selected value a matter of opening a context menu.
Unlike datafy/nav based tools, Reveal does not enforce a particular data representation for any given object, making it an open set — that includes datafy/nav as one of the available options. It does not use datafy/nav by default because in the absence of inter-process communication to datafy is to lose.
Not being limited to text, Reveal uses judicious syntax highlighting to aid
in differentiating various objects: text java.lang.Integer
looks differently
depending on whether it was produced from a symbol or a class.
Documentation
You can find overview, setup instructions and more at vlaaad.github.io/reveal.
Versioning, stability, public and internal code
Reveal uses 1.MAJOR.REVISION
versioning where:
1
is a static prefix for compatibility with semantic versioning. Reveal should never introduce breaking changes, so if an update broke something, please file a bug report;MAJOR
is a number that is incremented when there are significant changes or improvements to Reveal;REVISION
is a commit number from the beginning of a history.
Reveal's compatibility promise applies to its public API: vlaaad.reveal
and
vlaaad.reveal.ext
namespaces, everything else is implementation detail that
is subject to change. Reveal's UI and controls might change in the future.