scope-capture

Reproducting the context of your code at the REPL

What is scope-capture?

  • Tooling as a library #lisp
  • For easing REPL-based development /debugging
  • By recording & restoring the runtime context (≈bindings of names) of a code expression
  • Portable (CLJS), customizable, composable

Demo

Embracing Clojure (1/2)

This library leverages almost everything that makes Clojure special:

  • Immutable values
    • for reliable snapshots
  • A programmable compiler
    • via macros
    • simple scoping model

Embracing Clojure (2/2)

  • Homoiconicity
    • for encoding messages between compilation and execution
  • Dynamism
    • a mutable runtime (Vars)
    • dynamic typing
    • the REPL(s)!
  • Shared-memory concurrency support

How is it useful?

Even more tangible programs:

  • Much faster debugging
  • Ad hoc exploration
  • Accessibility:
    • for Clojure beginners
    • for new developers on the team
    • for occasional maintenance
  • Opportunities for more tooling (IDE integrations etc.)

How to contribute?

  • Use it, give feedback
  • Experiment on many Clojure platforms / REPLs
    • ClojureScript, Planck, Lumo, Cider, Atom, GorillaREPL...
  • Build more tooling on top!

Questions?

scope-capture

By Val Waeselynck

scope-capture

Presenting the scope-capture library to the Paris Clojure User Group

  • 1,222