Emacs-lisp (elisp) is a nice language to play around with code and try things as
you develop them – explorative programming. I often use the
buffer for that, but sometimes it's nice to use a so-called 'REPL' (
Read-Eval-Print-Loop) instead. A REPL is a sort-of command-line interface
where your expressions are evaluated as soon as they are considered 'complete'
and you press
So, enter Emacs's built-in repl:
IELM. You can activate it with
and the interaction looks something like the following:
*** Welcome to IELM *** Type (describe-mode) for help. ELISP> 123 123 ELISP> (+ 1 2) 3 ELISP> ;; comment ELISP> (defun fac (n) (if (= 0 n) 1 (* n (fac (- n 1))))) fac ELISP> (fac 5) 120 ELISP>
By default, IELM evaluates complete expressions automatically as soon you as you press Enter. So one thing to remember is that if you want to have multi-line expression (like above), you must make sure that after each line the expression is not complete (i.e., the brackets are not balanced) -- otherwise the expression will be evaluated too early. That makes modes like autopair or paredit a bit inconvenient for this.
If you don't like that behavior, you can do:
(setq ielm-dynamic-return nil)
which will allow you to Enter as much as you want and only evaluate things when
C-j. But then you might as well use
suppose. Personally, I use IELM mostly as a calculator.