24 April 2023
The Clojure Team
The Clojure team is proud to introduce Morse, a graphical, interactive tool for browsing and inspecting Clojure data, evolved from REBL. Morse is open source, licensed under the Apache license.
One of the prime value propositions in using a Lisp language is that you should be able to interact with your live program. The typical access mechanism for Clojure programs is the REPL, but its print-oriented streaming nature limits interactive and graphical data exploration.
Morse, like REBL before it, is a library that provides a graphical browser for Clojure data that allows active traversal into and back out of nested structures. REBL was intended to sit in the middle of your editor⇔process REPL streams and automatically render and cache all REPL results. This made it difficult to integrate with dev environments that used REPLS without raw streaming capabilities. In Morse the emphasis is now on inspecting on demand via the
inspect API, and REPL interception is strictly optional. This should make Morse easy to integrate with all dev setups.
It’s not always feasible to execute a graphical browser process inside of the program process, e.g. when the inspected program is running remotely. Morse can be configured to connect to and inspect a remote program, a facility built on the new Replicant libraries. Morse uses Replicant to efficiently and incrementally traverse remote data, extending its power to a variety of new use cases.
Clojure lets programmers solve problems by staying connected to their running programs and live data, incrementally building up both the program and their understanding of the problem they are trying to solve. Morse, Replicant, and the new add-libs features of Clojure version 1.12.0-alpha3 all work together to amplify the power of the programmer during interactive development.