tags:

views:

132

answers:

3

if i played with a lot of code in a repl console, how can i clear it ? i would like a fresh one without restarting it. can that be done ?

+1  A: 

If you are running the repl through a terminal window (eg: Terminal.app on MacOS or xterm/aterm/urxvt etc on linux) then you can type Control-L and it should clear the terminal window and give you a new repl prompt. However all macros/atoms you previously defined are still going to be in memory, so this is just a "Cosmetic" clear.

Brian Gianforcaro
the initial question was about cosmetically clearing the repl. later i realized that clearing could also mean something else :)
Belun
+5  A: 

If you want to clear the current namespace of all temporary variables and functions you declared you can use this one liner (or make a function of it) :

(map #(ns-unmap *ns* %) (keys (ns-interns *ns*)))

or

(ns myutil)
(defn ns-clean
       "Remove all internal mappings from a given name space or the current one if no parameter given."
   ([] (ns-clean *ns*)) 
   ([ns] (map #(ns-unmap *ns* %) (keys (ns-interns *ns*)))))
(ns mytest)

... make loads of junk ...

(myutil/ns-clean)

... great!!! I can now make all new junk ... 

It does not claim to give you a squeaky clean namespace, just one with less of the junk which usually accumulates in a typical repl session.

Use with caution : do not pull the rug from under your feet!

Peter Tillemans
thanks. i was thinking about just getting rid of the text in the console... you put new light into it
Belun
+2  A: 

In EMACS/slime REPLs C-c C-o clears the last output (in case you've typed something that gave a very long answer) C-c M-o clears the whole thing

In GNOME terminals, you've got a menu option Terminal/Reset and Clear

John Lawrence Aspden